在Python的字典中保持相同的值

2024-09-27 07:17:50 发布

您现在位置:Python中文网/ 问答频道 /正文

有点像Python新手,但有可能做到以下几点吗?你知道吗

>>>random_dict=dict(a=2)
>>>addOnlyOneValue(random_dict)
{'a': 3}
>>>addOnlyOneValue(random_dict)
{'a': 3}

我所做的:

def addOnlyOneValue(random_dict):
    random_dict2=random_dict     #I thought random_dict and random_dict2 would be modified independently    
    for val in random_dict2.keys():
        random_dict2[val]+=1
    print (random_dict2)

但如果我这样做,我会得到以下结果:

>>>random_dict=dict(a=2)
>>>addOnlyOneValue(random_dict)
{'a': 3}
>>>addOnlyOneValue(random_dict)
{'a': 4}

有没有可能在addOnlyOneValue函数中将random_dict重置为它的原始值(这里random_dict=dict(a=2))?你知道吗


Tags: andinfordefrandomvalbedict
2条回答

您要做的是copy()词典:

random_dict2 = random_dict.copy()

在您的示例中,您只是将random_dict2作为对random_dict的引用—您想要的是创建一个具有相同值的新的random_dict2(请注意,这是一个浅拷贝,因此如果您的字典有可变项,那么新字典将仍然指向这些项,这可能会导致看起来奇怪的行为)。你知道吗

请注意,与手动循环不同,您可以使用dictionary comprehension

def addOnlyOneValue(random_dict):
    print({key: value+1 for key, value in random_dict.items()})

字典理解是通过修改现有数据结构中的值来创建新字典的最佳方法。你知道吗

将字典(或除字符串或数字以外的任何其他对象)赋值给另一个变量会导致对该对象的引用赋值,它不会创建副本。您可以:

random_dict2 = dict(random_dict)

列表类似:

my_copy = list(some_list)

请注意,此副本是“浅”的,这意味着只复制列表,并且将包含对所包含对象的引用,而不是对象的副本。阅读有关copying in python的更多信息。你知道吗

相关问题 更多 >

    热门问题