将字典复制到新变量中,而不保持与前一个变量的链接

Man*_*shi 5 python python-3.x

我想将字典复制到一个新变量而不保持与前一个变量的链接.

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)

  • 采取的观点...我想回答这些问题可能是一个心灵阅读游戏,是吧? (3认同)

Ada*_*ner 6

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

如果你很在意引用瓦尔的字典,你可以使用deepcopycopy模块.


Joh*_*hin 6

请参阅dict.copy 方法

不存在“将对象复制新变量中”这样的事情。您可以复制一个对象;这会创建一个新对象。一个对象可能有 0 个、1 个或多个名称(您称之为“变量”)。是否给新对象命名(例如foo = d.copy())或不命名(例如)取决于您some_function(d.copy())

可以使用浅复制或深复制来复制对象。请参阅复制模块。深层复制是否实现了您所说的“无需维护与先前变量的链接”的含义?如果没有,请澄清。