List 修改Python中的词典列表
我有List 修改Python中的词典列表,list,python-2.7,dictionary,insert,List,Python 2.7,Dictionary,Insert,我有s=[{'A':10}]。我做了s[0]。插入(s[0]),这样s:[{'A':10},{'A':10}]。当我修改s[0]['B']=20时,我想要的s是[{'A':10,'B':20},{'A':10}]。但是,我得到了s:[{'A':10,'B':20},{'A':10},{'B':20}]。有人能帮忙吗?非常感谢 由于字典是一种引用数据类型,因此在执行此操作时,您只能插入对同一字典的另一个引用 s[0].insert(s[0]) 您可以通过制作深度拷贝来避免这种情况,而深度拷贝可以
s=[{'A':10}]
。我做了s[0]。插入(s[0])
,这样s:[{'A':10},{'A':10}]
。当我修改s[0]['B']=20
时,我想要的s是[{'A':10,'B':20},{'A':10}]
。但是,我得到了s:[{'A':10,'B':20},{'A':10},{'B':20}]
。有人能帮忙吗?非常感谢 由于字典是一种引用数据类型,因此在执行此操作时,您只能插入对同一字典的另一个引用
s[0].insert(s[0])
您可以通过制作深度拷贝来避免这种情况,而深度拷贝可以通过模块拷贝轻松完成:
import copy
s[0].insert(copy.deepcopy(s[0]))
这是一个内存问题。当您制作一个副本时,它会指向与原始a相同的内存位置,因此对a的任何更改都会同时更改这两个位置。您需要做一个deepcopy,它将把一个的副本放在它的内存位置。这里有一个链接可以更好地解释
from copy import deepcopy
s[0].insert(deepcopy(s[0]))