Don*_*ion 14
from copy import deepcopy
new_dict = deepcopy(orig_dict)
Run Code Online (Sandbox Code Playgroud)
dict.copy()创建浅拷贝,这意味着,如果你的字典包含其他容器对象,如list,tuples等,它们将被再次引用而不会重复!
您可以尝试自己:
a = {1:{1:2}}
print id(a[1])
>>> 159584844
b = a.copy()
print id(b[1])
>>> 159584844
c = deepcopy(a)
print id(c[1])
>>> 159575276
Run Code Online (Sandbox Code Playgroud)
在.copy词典中的方法就足够了.
dict1 = {'foo': 'bar'}
dict2 = dict1.copy()
dict1['bar'] = 'baz'
dict2['bar'] = 'bif'
print(dict1, dict2)
Run Code Online (Sandbox Code Playgroud)
产出:
{'foo': 'bar', 'bar': 'baz'} {'foo': 'bar', 'bar': 'bif'}
Run Code Online (Sandbox Code Playgroud)
如果你想dict1完全删除引用,你可以del dict1.
如果你很在意引用瓦尔内的字典,你可以使用deepcopy从copy模块.
请参阅dict.copy 方法
不存在“将对象复制到新变量中”这样的事情。您可以复制一个对象;这会创建一个新对象。一个对象可能有 0 个、1 个或多个名称(您称之为“变量”)。是否给新对象命名(例如foo = d.copy())或不命名(例如)取决于您some_function(d.copy())。
可以使用浅复制或深复制来复制对象。请参阅复制模块。深层复制是否实现了您所说的“无需维护与先前变量的链接”的含义?如果没有,请澄清。
| 归档时间: |
|
| 查看次数: |
20395 次 |
| 最近记录: |