我有s = [{'A':10}]
。我做了s[0].insert(s[0])
,所以s: [{'A':10}, {'A':10}]
。当我修改s[0]['B'] = 20
时,我想要的是[{'A':10, 'B':20}, {'A':10}]
。但是,我得到了:[{'A':10, 'B':20}, {'A':10}, {'B':20}]
。有人可以帮忙吗?非常感谢!
答案 0 :(得分:0)
由于字典是参考数据类型,因此在执行
时只能插入对同一字典的另一个引用s[0].insert(s[0])
您可以通过模块副本轻松完成深层复制来避免这种情况:
import copy
s[0].insert(copy.deepcopy(s[0]))
答案 1 :(得分:0)
这是一个内存问题。当您将A点的副本复制到与原始A相同的内存位置时,对A的任何更改都会更改。您需要进行深度复制,将A的副本放在内存位置。这是一个更好地解释deepcopy
的链接from copy import deepcopy
s[0].insert(deepcopy(s[0]))