这是我的示例代码:
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上尝试过,结果相同。
答案 0 :(得分:0)
在编写dict2 = dict1
时,您并没有创建dict1
的副本,只是将dict2
设置为指向dict1
字典的指针。因此,如果您更改dict1
,dict2
也将被更改,因为它在内存中查找的是相同的字典。如果要将dict1
复制到dict2
,则应使用Python标准库中copy
模块中的deepcopy函数。