为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

紫衣仙女 2019-06-09 14:01:41
如何复制字典并仅编辑该副本有人能给我解释一下吗?这对我来说毫无意义。我把一本字典复制到另一本,然后编辑第二本,两者都被修改了。为什么会发生这种事?>>> dict1 = {"key1": "value1", "key2": "value2"}>>> dict2 = dict1>>> dict2{'key2': 'value2', 'key1': 'value1'}>>> dict2["key2"] = "WHY?!">>> dict1{'key2': 'WHY?!', 'key1': 'value1'}
查看完整描述

3 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

Python绝不可能隐式复制对象。当你设置dict2 = dict1,使它们引用相同的dict对象,因此,当您对其进行变异时,所有对它的引用都会继续引用当前状态下的对象。

如果您想要复制dict(这是很少见的),则必须使用

dict2 = dict(dict1)

dict2 = dict1.copy()


查看完整回答
反对 回复 2019-06-09
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

>>> 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}}


查看完整回答
反对 回复 2019-06-09
  • 3 回答
  • 0 关注
  • 715 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信