python 字典赋值、浅拷贝、深拷贝

# 项目开发中,因字典可修改,所以注意拷贝方式
import copy

1. 原字典操作

dict1 = {'user': 'test', 'num': [1, 2, 3]}                  #  原字典
dict2 = dict1                                                       # 直接赋值
dict3 = dict1.copy()                                            # 浅拷贝,只深拷贝父级目录
dict4 = copy.deepcopy(dict1)                             # 深拷贝拷贝,父级目录,子级目录全部拷贝(需导入copy模块)

2. 修改原字典

dict1["user"] = "change"
dict1["num"].remove(1)

print("更改后的字典:", dict1)
print("赋值字典:", dict2)
print("浅拷贝:", dict3)
print("深拷贝:", dict4)

# 输出结果:
     更改后的字典: {'user': 'change', 'num': [2, 3]}
     赋值字典: {'user': 'change', 'num': [2, 3]}                         #  原字典改变, 赋值字典随之改变
     浅拷贝: {'user': 'test', 'num': [2, 3]}                                  #  原字典改变,浅拷贝字典随之改变
     深拷贝: {'user': 'test', 'num': [1, 2, 3]}                             #  原字典改变,深拷贝字典不改变

3. 修改赋值、浅拷贝、深拷贝后的字典

dict2["user"] = "test2"
print(dict1)
# {'user': 'test2', 'num': [1, 2, 3]}         #  赋值字典改变,原字典也改变

dict3["num"].remove(3)
print(dict1)
# {'user': 'test2', 'num': [1, 2]}            #  浅拷贝字典改变,原字典随之改变

dict4["user"] = "test4"
print(dict1)
# {'user': 'test2', 'num': [1, 2]}           #  深拷贝后的字典改变,原字典不改变

总结:

       原字典赋值、浅拷贝之间紧密相连,一方改变,对方随之改变!

       原字典深拷贝,深拷贝独立门户,从此与原字典无关!

猜你喜欢

转载自blog.csdn.net/LeonTom/article/details/82761319
今日推荐