如何复制一个字典并只编辑副本

31 浏览
0 Comments

如何复制一个字典并只编辑副本

我设置了dict2 = dict1。当我编辑dict2时,原始的dict1也会改变。为什么?

>>> dict1 = {"key1": "value1", "key2": "value2"}
>>> dict2 = dict1
>>> dict2["key2"] = "WHY?!"
>>> dict1
{'key2': 'WHY?!', 'key1': 'value1'}

admin 更改状态以发布 2023年5月21日
0
0 Comments

当你把dict2 = dict1赋值时,你并没有复制dict1,相反它们指向同一个引用名称,这个引用名称指向dict1

要复制可变类型如字典,可以使用copy / deepcopycopy模块。

import copy
dict2 = copy.deepcopy(dict1)

0
0 Comments

Python从不隐式复制对象。当你设置dict2 = dict1时,你让它们都引用同一个完全相同的字典对象,因此当你改变它时,所有对它的引用都继续引用它的当前状态的对象。\n\n如果您想复制该字典(这很少见),您必须显式地执行以下操作\n\n

dict2 = dict(dict1)

\n\n或\n\n

dict2 = dict1.copy()

0