【python】dict的拷贝问题
部分来源:http://blog.sina.com.cn/s/blog_5c6760940100bmg5.html
①直接赋值 ---- 结果是不同名的引用
对新字典的修改完全作用在了原来的字典上,只是引用的关系
>>> c = {'a':1,'b':2} >>> d = c >>> d['e']=3 >>> d {'a': 1, 'b': 2, 'e': 3} >>> c {'a': 1, 'b': 2, 'e': 3} >>> f = dict() >>> f = d >>> f["k"]=4 >>> f {'a': 1, 'k': 4, 'b': 2, 'e': 3} >>> c {'a': 1, 'k': 4, 'b': 2, 'e': 3}
②使用copy()函数 --- 浅拷贝。
如果一个字典中有引用类型,如list,复制只会复制其引用而不会复制其值:
>>> d = {'names': ['bob', 'sam']} >>> y = d.copy() >>> y['names'][0] = 'jack' >>> y {'names': ['jack', 'sam']} >>> d {'names': ['jack', 'sam']}
③深拷贝 deepcopy
>>> from copy import deepcopy >>> d = {'names': ['bob', 'sam']} >>> y = deepcopy(d) >>> y['names'][0] = 'jack' >>> d {'names': ['bob', 'sam']} >>> y {'names': ['jack', 'sam']}