Python中的赋值语句不复制对象,它们在目标和对象之间创建绑定。
因此,dict2 = dict1
它会在dict2
和dict1
引用的对象之间产生另一个绑定。
如果要复制字典,可以使用copy module
。复制模块有两个接口:
copy.copy(x)
Return a shallow copy of x.
copy.deepcopy(x)
Return a deep copy of x.
浅表复制和深度复制之间的区别仅与复合对象(包含其他对象的对象,如列表或类实例)有关:
甲浅拷贝构造新化合物对象,然后(在可能的范围)插入到它的对象引用原始发现。
甲深层副本构造新化合物的对象,然后,递归地,插入拷贝到它的目的在原始发现。
例如,在python 2.7.9中:
>>> import copy
>>> a = [1,2,3,4,['a', 'b']]
>>> b = a
>>> c = copy.copy(a)
>>> d = copy.deepcopy(a)
>>> a.append(5)
>>> a[4].append('c')
结果是:
>>> a
[1, 2, 3, 4, ['a', 'b', 'c'], 5]
>>> b
[1, 2, 3, 4, ['a', 'b', 'c'], 5]
>>> c
[1, 2, 3, 4, ['a', 'b', 'c']]
>>> d
[1, 2, 3, 4, ['a', 'b']]
dict1
并dict2
指向相同的字典。