为什么在迭代器中更改值的副本时字典的输入会更改?

时间:2019-07-10 14:01:17

标签: python python-3.x python-2.7

我有这本字典,

dict = {'A':np.random.rand(2,2), 'B':np.random.rand(2,2)}

由于某些原因,我需要在此词典中获取项目的副本,并按以下方式进行操作,

for key, value in dict.items():
    tmp = value
    tmp[1, 1] = 0

这实际上改变了字典内部的原始值!如果我得到打印件,例如第一个条目,我将看到:

Initial value
[[0.46905019 0.5143053 ]
[0.9083885  0.62560836]]
Final Value
[[0.46905019 0.5143053 ]
[0.9083885  0.        ]]

那么,如何获得词典项目的副本并在不更改原始值的情况下进行操作?当然,一种简单的解决方案是制作字典副本并使用该副本,但是还有其他解决方案吗?更重要的是,这种行为是故意的还是不受欢迎的?

1 个答案:

答案 0 :(得分:0)

您可以像这样使用.copy()

phone