我认为我的代码会更清楚-
someList = list()
foo = {'a':'b'}
someList.append(foo)
print someList
>>> [{'a':'b'}]
defaultbazz = {'a':2, 'b':'t', 'c':'gg'}
for k, v in defaultbazz.iteritems():
foo[k] = v
print someList
>>> [{'a': 2, 'c': 'gg', 'b': 't'}]
最后的打印不应该是[{'a':'b'}]
吗?我没有更新someList
,我想要它。
在我看来,这是无法解释的行为..
但是,如果这就是 python 的工作方式,我该如何找到解决方法?即使设置一个新的字典也会更新原来的字典。我的意思是:
someList = list()
foo = {'a':'b'}
someList.append(foo)
print someList
>>> [{'a':'b'}]
bar = foo
defaultbazz = {'a':2, 'b':'t', 'c':'gg'}
for k, v in defaultbazz.iteritems():
bar[k] = v
print someList
>>> [{'a': 2, 'c': 'gg', 'b': 't'}]
如果有人可以解释我为什么会发生这种情况,我将不胜感激。