微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 Python 字典的行为类似于对象引用?

如何解决为什么 Python 字典的行为类似于对象引用?

我需要使用 dict 中的 dict 作为副本,但是当我更改此副本时,原始 dict 也会更改。问题是:“是否有任何特定的文档来描述这种 Python 行为?”

b = {"first_first": 10} # internal dict

a = {"first": b,"second": 5}  # full dict

print(a)  # {'first': {'first_first': 10},'second': 5}

x = a["first"] # new object creation (want to get a copy of the internal dict)
x["first_first"] = 8  # created object modification

print(a)  # {'first': {'first_first': 8},'second': 5} # Why was initial dict changed? Seems that 
# line : x = a["first"] passes a reference

解决方法

通过执行 a["first"],您将获得对内部对象(这里是字典)的引用

如果你想在不影响初始字典的情况下修改字典,你必须明确地创建一个新字典。有不同的方法可以做到这一点。你可以简单地做:

x = dict(a["first"])

x = a["first"].copy()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。