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

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

有人能给我解释一下吗?这对我来说毫无意义。


我把一本字典复制到另一本,然后编辑第二本,两者都被修改了。为什么会发生这种事?


>>> dict1 = {"key1": "value1", "key2": "value2"}

>>> dict2 = dict1

>>> dict2

{'key2': 'value2', 'key1': 'value1'}

>>> dict2["key2"] = "WHY?!"

>>> dict1

{'key2': 'WHY?!', 'key1': 'value1'}


紫衣仙女
浏览 718回答 3
3回答

肥皂起泡泡

Python绝不可能隐式复制对象。当你设置dict2 = dict1,使它们引用相同的dict对象,因此,当您对其进行变异时,所有对它的引用都会继续引用当前状态下的对象。如果您想要复制dict(这是很少见的),则必须使用dict2 = dict(dict1)或dict2 = dict1.copy()

芜湖不芜

>>> x={'a': 1, 'b': {'m': 4, 'n': 5, 'o': 6}, 'c': 3}>>> u=x.copy()>>> v=dict(x)>>> import copy>>> w=copy.deepcopy(x)>>> x['a']=10>>> x{'a': 10, 'c': 3, 'b': {'m': 4, 'o': 6, 'n': 5}}>>> u{'a': 1, 'c': 3, 'b': {'m': 4, 'o': 6, 'n': 5}}>>> v{'a': 1, 'c': 3, 'b': {'m': 4, 'o': 6, 'n': 5}}>>> w{'a': 1, 'c': 3, 'b': {'m': 4, 'o': 6, 'n': 5}}>>> x['b']['m']=40>>> x{'a': 10, 'c': 3, 'b': {'m': 40, 'o': 6, 'n': 5}}>>> u{'a': 1, 'c': 3, 'b': {'m': 40, 'o': 6, 'n': 5}}>>> v{'a': 1, 'c': 3, 'b': {'m': 40, 'o': 6, 'n': 5}}>>> w{'a': 1, 'c': 3, 'b': {'m': 4, 'o': 6, 'n': 5}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python