为什么当我改变副本字典中的元素时,原始字典的元素也会改变?
为什么当我改变副本字典中的元素时,原始字典的元素也会改变?
这个问题已有答案:
import numpy as np var_np = np.zeros(shape=[2]) dic_orig = {'var_np':var_np.copy(), 'var_int':0} dic_copy = dic_orig.copy() dic_copy['var_np'] += 1 dic_copy['var_int'] += 1 #problem print(dic_orig['var_int']) #ouput: 0 -->Didn't chagne, Good! print(dic_orig['var_np']) #ouput:[1,1] -->This change, Bad! #The output shows that this two have different id #The how would the problem happen? print(id(dic_orig['var_int'])) #ouput:1474134096 print(id(dic_copy['var_int'])) #ouput:1474134128
如代码演示所示,
当字典元素为numpy数组时,
如果我更改该字典的副本版本,则原始字典的元素将更改。
这可能会导致一些潜在的错误和问题,
实际上我不希望这种情况发生。
为什么会发生这种情况?难道复制操作没有隔离原始和副本版本的字典吗?
我该如何解决这个问题?
我已经谷歌了,似乎没有人在之前提过这个问题。非常感谢您的真诚帮助!
admin 更改状态以发布 2023年5月23日