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
Python 向列表中添加多个词典时不需要的词典更新_Python_List_Dictionary_Append_Updates - Fatal编程技术网

Python 向列表中添加多个词典时不需要的词典更新

Python 向列表中添加多个词典时不需要的词典更新,python,list,dictionary,append,updates,Python,List,Dictionary,Append,Updates,在Python中,我试图创建一个由两个独立字典组成的列表(dict1&dict2)。然而,当我使用append和update方法将它们添加到一个新列表中时,它似乎改变了我的dict1字典 n = [] dict1 = {"a": 1, "b": 2} dict2 = {"c": 3, "d": 4, "e": 5} n.append(dict1) n[0].update(dict2) 这给了我想要的n结果,但它也覆盖了我的dict1,这是不需要的 dict1 {'a': 1, 'b': 2

在Python中,我试图创建一个由两个独立字典组成的列表(
dict1
&
dict2
)。然而,当我使用append和update方法将它们添加到一个新列表中时,它似乎改变了我的
dict1
字典

n = []
dict1 = {"a": 1, "b": 2}
dict2 = {"c": 3, "d": 4, "e": 5}

n.append(dict1)
n[0].update(dict2)
这给了我想要的
n
结果,但它也覆盖了我的
dict1
,这是不需要的

dict1 
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

为什么会这样?如何在不修改第一个dict的情况下实现将两个dict合并到一个列表中的目标?此代码用于将2个JSON文档合并为一个文档,以防有人怀疑。

如注释中所述,您在执行
.update()
时引用的是同一个dict。因此,您可以使用
.copy()
进行显式复制,并获得初始dict,然后可以对其进行更新

n.append(dict1.copy())
n[0].update(dict2)
或者,如果您有两个DICT,您可以在一行中完成,如:

n.append(dict(dict1, **dict2))
或者,您可以显式地从一个空dict开始,然后像这样更新:

n.append({})
n[0].update(dict1)
n[0].update(dict2)

如注释中所述,在执行
.update()
时引用的是同一个dict。因此,您可以使用
.copy()
进行显式复制,并获得初始dict,然后可以对其进行更新

n.append(dict1.copy())
n[0].update(dict2)
或者,如果您有两个DICT,您可以在一行中完成,如:

n.append(dict(dict1, **dict2))
或者,您可以显式地从一个空dict开始,然后像这样更新:

n.append({})
n[0].update(dict1)
n[0].update(dict2)

这是因为
dict1
n[0]
指的是同一个dict。如果你想要副本,请使用副本:
n.append(dict1.copy())
这是因为
dict1
n[0]
指的是同一个dict。如果你想要副本,请使用副本:
n.append(dict1.copy())