如何复制字典并仅编辑副本
2022-09-05 00:58:56
我设置.当我编辑时,原来的也会改变。为什么?dict2 = dict1
dict2
dict1
>>> dict1 = {"key1": "value1", "key2": "value2"}
>>> dict2 = dict1
>>> dict2["key2"] = "WHY?!"
>>> dict1
{'key2': 'WHY?!', 'key1': 'value1'}
我设置.当我编辑时,原来的也会改变。为什么?dict2 = dict1
dict2
dict1
>>> dict1 = {"key1": "value1", "key2": "value2"}
>>> dict2 = dict1
>>> dict2["key2"] = "WHY?!"
>>> dict1
{'key2': 'WHY?!', 'key1': 'value1'}
Python从不隐式复制对象。设置 时,您将使它们引用相同的完全相同的dict对象,因此当您对其进行更改时,对它的所有引用都会继续引用当前状态下的对象。dict2 = dict1
如果你想复制字典(这种情况很少见),你必须明确地这样做
dict2 = dict(dict1)
或
dict2 = dict1.copy()
当您分配 时,您没有复制 ,它只会导致 只是 的另一个名称。dict2 = dict1
dict1
dict2
dict1
要复制字典等可变类型,请使用复制
模块的 / 。copy
deepcopy
import copy
dict2 = copy.deepcopy(dict1)