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]}           #  原字典完全不变

总结:

       ①原字典赋值

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

       ②原字典浅拷贝

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

       ③原字典深拷贝

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

  • 19
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值