修改Python中的词典列表

时间:2015-03-27 20:39:05

标签: list python-2.7 dictionary insert

我有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}]。有人可以帮忙吗?非常感谢!

2 个答案:

答案 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]))