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

  • Post author:
  • Post category: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. 分别修改

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

–> 查看原字典变化

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

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

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


总结:


①原字典



赋值

紧密相连;一方改变,对方随之改变!



原字典



浅拷贝



父级各自独立,子级紧密相连;一方改变,对方父级不变,子级随之改变!



原字典



深拷贝



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



版权声明:本文为LeonTom原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。