- 方法返回一个新字典,其包含的键值对与原来的字典相同(浅复制)
x = {'username':'admin','machines':['foo','bar','baz']
y=x.copy()
y['username'] = 'mlh'
y['machines'].remove('bar')
此时y为{‘username’:’mlh’,’machines’:[‘foo’,’baz’]}
x为{‘username’:’admin’,’machines’:[‘foo’,’baz’]
当替换副本中的值时,原件不受影响。然而,如果修改副本中的值(就地修改而不是替换),原件也将发生变化,因为原件指向的也是被修改的值。
- 为了避免这个问题,一种办法是执行深复制,即同时复制值以及包含的所有值。可使用模块copy中的函数deepcopy
from copy import deepcopy
d = {}
d['names'] =['Alfred','Bertrand']
c = d.copy()
dc = deepcopy(d)
d['name'].append('Clive')
c的值
{‘names’:[‘Alfed’,’Brrtrand’,’Clive’]}
dc的值
{‘names’:[‘Alfred’,’Bertrand’]