【发布时间】:2019-03-26 23:48:34
【问题描述】:
根据the official docs,字典副本很浅,即它返回一个包含相同键值对的新字典:
dict1 = {1: "a", 2: "b", 3: "c"}
dict1_alias = dict1
dict1_shallow_copy = dict1.copy()
我的理解是,如果我们deldict1 的一个元素,dict1_alias 和dict1_shallow_copy 都应该受到影响;但是,深度复制不会。
del dict1[2]
print(dict1)
>>> {1: 'a', 3: 'c'}
print(dict1_alias)
>>> {1: 'a', 3: 'c'}
但是dict1_shallow_copy第二个元素仍然存在!
print(dict1_shallow_copy)
>>> {1: 'a', 2: 'b', 3: 'c'}
我错过了什么?
【问题讨论】:
-
即使是浅拷贝也是拷贝,不是同一个对象。
-
"现在如果我们删除 dict1 的一个元素,dict1_alias 和 dict1_shallow_copy 都应该受到影响。"不,绝对不是。它们是不同的dict对象,这就是为什么它们是副本。
标签: python-3.x deep-copy shallow-copy