[Python] dict字典的浅复制与深复制

Python中针对dict字典有两种复制:

(1)浅复制:利用 copy() 或者 dict() ;复制后对原dict的内部子对象(方括号[]内元素)进行操作时,由浅复制得到的dict受该操作影响

(2)深复制:利用 deepcopy() ;复制后对原dict的内部子对象(方括号[]内元素)进行操作时,由深复制得到的dict不会受该操作影响

from copy import deepcopy

def test():
    d1 = {"a": {"keys": [1, 2, 3]}, 'b': {"keys": [4, 5, 6]}}
    d2 = d1.copy()            # 浅复制
    d3 = dict(d1)             # 浅复制
    d4 = deepcopy(d1)         # 深复制
    print("d1=%s \nd2=%s \nd3=%s \nd4=%s" % (d1, d2, d3, d4))
    d1["a"]["keys"] = [1, 2]  # 修改d1的值
    print("d1 modified.")
    print("d1=%s \nd2=%s \nd3=%s \nd4=%s" % (d1, d2, d3, d4))

"""
输出结果:
d1={'a': {'keys': [1, 2, 3]}, 'b': {'keys': [4, 5, 6]}} 
d2={'a': {'keys': [1, 2, 3]}, 'b': {'keys': [4, 5, 6]}} 
d3={'a': {'keys': [1, 2, 3]}, 'b': {'keys': [4, 5, 6]}} 
d4={'a': {'keys': [1, 2, 3]}, 'b': {'keys': [4, 5, 6]}}
d1 modified.
d1={'a': {'keys': [1, 2]}, 'b': {'keys': [4, 5, 6]}} 
d2={'a': {'keys': [1, 2]}, 'b': {'keys': [4, 5, 6]}} 
d3={'a': {'keys': [1, 2]}, 'b': {'keys': [4, 5, 6]}} 
d4={'a': {'keys': [1, 2, 3]}, 'b': {'keys': [4, 5, 6]}}
"""

 

posted @ 2018-04-03 17:14  焦距  阅读(4226)  评论(0编辑  收藏  举报