【python 深拷贝与浅拷贝】

python 深拷贝与浅拷贝

问题:

在用影刀编写流程的时候发现,明明只修改人名为“小张”对应的字典里面的值,但是所有的人名对应的值都被修改了。
【python 深拷贝与浅拷贝】_第1张图片
在这里插入图片描述

原因:

第14行,设置键值对,值对应的变量“初始打卡类型字典”是前面流程生成的,还是引用了原来的地方。

用python来复现:

1、如果列表是前面流程生成的,那么要修改值,就都修改了。

aliens = []
new_alien = {"color": "green"}
#往字典里添加5个字典
for num in range(5):
    aliens.append(new_alien)
print(aliens)
#修改第一个字典的颜色
aliens[0]["color"] = "red"
print(aliens)

在这里插入图片描述
2、如果列表的值本来就写好了,修改特定的值,后面字典里面值不会被同步修改。
在这里插入图片描述
在这里插入图片描述

解决方案:

赋值的时候用深拷贝
在从整体的dict_instance中取出单个字典的时候,用深拷贝
【python 深拷贝与浅拷贝】_第2张图片

你可能感兴趣的:(python)