Python 复制字典
由于Python中的变量仅仅是内存中对象的一个标签或引用,简单的赋值操作符不会创建对象的副本。
示例1
在这个示例中,我们有一个字典”d1″,将它赋值给另一个变量”d2″。如果”d1″被更新,改变也会反映在”d2″中。
d1 = {"a":11, "b":22, "c":33}
d2 = d1
print ("id:", id(d1), "dict: ",d1)
print ("id:", id(d2), "dict: ",d2)
d1["b"] = 100
print ("id:", id(d1), "dict: ",d1)
print ("id:", id(d2), "dict: ",d2)
输出
它将产生以下 输出 −
id: 2215278891200 dict: {'a': 11, 'b': 22, 'c': 33}
id: 2215278891200 dict: {'a': 11, 'b': 22, 'c': 33}
id: 2215278891200 dict: {'a': 11, 'b': 100, 'c': 33}
id: 2215278891200 dict: {'a': 11, 'b': 100, 'c': 33}
为了避免这种情况,并且创建字典的浅拷贝,请使用copy()方法而不是赋值。
示例2
d1 = {"a":11, "b":22, "c":33}
d2 = d1.copy()
print ("id:", id(d1), "dict: ",d1)
print ("id:", id(d2), "dict: ",d2)
d1["b"] = 100
print ("id:", id(d1), "dict: ",d1)
print ("id:", id(d2), "dict: ",d2)
输出
当”d1″被更新时,”d2″现在不会改变,因为”d2″是字典对象的副本,而不仅仅是一个引用。
id: 1586671734976 dict: {'a': 11, 'b': 22, 'c': 33}
id: 1586673973632 dict: {'a': 11, 'b': 22, 'c': 33}
id: 1586671734976 dict: {'a': 11, 'b': 100, 'c': 33}
id: 1586673973632 dict: {'a': 11, 'b': 22, 'c': 33}