Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 修改Python中的词典列表_List_Python 2.7_Dictionary_Insert - Fatal编程技术网

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