如何复制字典并仅编辑副本

2022-09-05 00:58:56

我设置.当我编辑时,原来的也会改变。为什么?dict2 = dict1dict2dict1

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

答案 1

Python从不隐式复制对象。设置 时,您将使它们引用相同的完全相同的dict对象,因此当您对其进行更改时,对它的所有引用都会继续引用当前状态下的对象。dict2 = dict1

如果你想复制字典(这种情况很少见),你必须明确地这样做

dict2 = dict(dict1)

dict2 = dict1.copy()

答案 2

当您分配 时,您没有复制 ,它只会导致 只是 的另一个名称。dict2 = dict1dict1dict2dict1

要复制字典等可变类型,请使用复制模块的 / 。copydeepcopy

import copy

dict2 = copy.deepcopy(dict1)