我想替换存储在字典中的数组的第 n 行。字典的数组是用特定的“形状”创建的。在下面的例子中,dict有键[10, 20, 30, 40]
,每个键对应一个5x 2数组;当尝试用[2,-4]
列表替换key=20标识的数组的第2行时,下面的代码替换dict
中所有数组的第2行。如何让它只替换key=20的数组?
import itertools
import numpy as np
my_dict = dict(zip([10, 20, 30, 40], itertools.repeat(np.zeros((5, 2)))))
my_dict[20][1] = [ 2, -4]
print(my_dict)
字符串
1条答案
按热度按时间wmtdaxz31#
以下是许多可能的解决方案之一:
字符串
你的问题是
itertools.repeat
的结果4次引用内存中的同一个对象,因此修改会反映在所有dict的值中。相反,
{key: np.zeros((5, 2)) ...}
为每个dict条目初始化一个新的零数组。