首页 > Python > 如何复制字典并仅编辑副本?

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

上一篇 下一篇

我设置.当我编辑时,原始版本也会更改。为什么?dict2 = dict1dict2dict1

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

分割线

网友回答:

虽然 和 生成副本,但它们只是层副本。如果您想要拷贝,则需要。举个例子:dict.copy()dict(dict1)copy.deepcopy(dict1)

>>> source = {'a': 1, 'b': {'m': 4, 'n': 5, 'o': 6}, 'c': 3}
>>> copy1 = source.copy()
>>> copy2 = dict(source)
>>> import copy
>>> copy3 = copy.deepcopy(source)
>>> source['a'] = 10  # a change to first-level properties won't affect copies
>>> source
{'a': 10, 'c': 3, 'b': {'m': 4, 'o': 6, 'n': 5}}
>>> copy1
{'a': 1, 'c': 3, 'b': {'m': 4, 'o': 6, 'n': 5}}
>>> copy2
{'a': 1, 'c': 3, 'b': {'m': 4, 'o': 6, 'n': 5}}
>>> copy3
{'a': 1, 'c': 3, 'b': {'m': 4, 'o': 6, 'n': 5}}
>>> source['b']['m'] = 40  # a change to deep properties WILL affect shallow copies 'b.m' property
>>> source
{'a': 10, 'c': 3, 'b': {'m': 40, 'o': 6, 'n': 5}}
>>> copy1
{'a': 1, 'c': 3, 'b': {'m': 40, 'o': 6, 'n': 5}}
>>> copy2
{'a': 1, 'c': 3, 'b': {'m': 40, 'o': 6, 'n': 5}}
>>> copy3  # Deep copy's 'b.m' property is unaffected
{'a': 1, 'c': 3, 'b': {'m': 4, 'o': 6, 'n': 5}}

关于浅拷贝与深拷贝,来自 Python 模块文档:copy

浅拷贝和深层复制之间的区别仅与复合对象(包含其他对象,如列表或类实例)的对象)相关:

  • 浅拷贝构造一个新的复合对象,然后(尽可能)在其中插入对原始对象中找到的对象的引用。
  • 深层副本构造一个新的复合对象,然后递归地将原始对象中发现的对象的副本插入其中。

分割线

网友回答:

Python 从不隐式复制对象。当你设置 时,你使它们引用相同的精确 dict 对象,所以当你改变它时,所有对它的引用都会一直引用当前状态的对象。dict2 = dict1

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

dict2 = dict(dict1)

dict2 = dict1.copy()

分割线

网友回答:

赋值时,您不是在复制 ,它会导致 的另一个名称。dict2 = dict1dict1dict2dict1

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

import copy

dict2 = copy.deepcopy(dict1)

模板简介:该模板名称为【如何复制字典并仅编辑副本?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Python】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 286次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 03-09
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
自适应 微信公众平台 微信模板 html5 微信素材 单页式简历模板 微信图片 微信文章 企业网站 响应式
您可能会喜欢的其他模板