为什么我的字典值在没有通知的情况下发生变化,以及如何停止它?

时间:2019-05-09 18:50:06

标签: python python-2.7 dictionary

这是我的示例代码:

dict1 = {'a': 5, 'b': 6, 'c': 7}
dict2 = dict1
for i in dict1:
    dict1[i] += 5
print dict1
print dict2

输出看起来像这样:

{'a': 10, 'c': 12, 'b': 11}
{'a': 10, 'c': 12, 'b': 11}

为什么不通知我dict2会发生变化?

GCC 4.8.2 Linux上的Python 2.7.10。

还在GCC 5.4.0上的2.7.12上尝试过,结果相同。

1 个答案:

答案 0 :(得分:0)

在编写dict2 = dict1时,您并没有创建dict1的副本,只是将dict2设置为指向dict1字典的指针。因此,如果您更改dict1dict2也将被更改,因为它在内存中查找的是相同的字典。如果要将dict1复制到dict2,则应使用Python标准库中copy模块中的deepcopy函数。