Python 如何基于现有条目迭代更新词典

Python 如何基于现有条目迭代更新词典,python,dictionary,Python,Dictionary,我在尝试用python迭代更新字典时遇到以下问题: import numpy as np array_1 = [0.1, 0.2, 0.9] array_2 = np.arange(0, 1, 0.1) dict_A = {} dict_A[0] = dict(zip([i for i in range(len(array_1))], [[[1 for i in range(len(array_2))] for j in range(len(array_1))] for k in range

我在尝试用python迭代更新字典时遇到以下问题:

import numpy as np

array_1 = [0.1, 0.2, 0.9]
array_2 = np.arange(0, 1, 0.1)

dict_A = {}
dict_A[0] = dict(zip([i for i in range(len(array_1))], [[[1 for i in range(len(array_2))] for j in range(len(array_1))] for k in range(len(array_1))]))

dict_B = {}
dict_B[0] = dict(zip([i for i in range(len(array_1))], [[1 for i in range(len(array_2))] for j in range(len(arra_2))]))

time = range(100)
for t in time:
    dict_A[t+1] = dict(dict_A[t])
    dict_B[t+1] = dict(dict_B[t])
    dict_A[t+1][np.random.choice()] = update_A()
    dict_B[t+1][np.random.choice()] = update_B()
当我运行这段代码的实际版本时,对于每一个t>0,dict_B都会得到保存在t-1的字典的更新版本,而对于dict_A和所有t,我会保存相同的字典


我肯定我犯了一个明显的错误。非常感谢您的帮助。

您的代码很难理解。您有一些我们不了解的函数,
update_A
update_B
,这些函数可能对理解您的错误非常重要,您正在用过于冗长的一行代码初始化DICT(看起来它们实际上应该只是列表,因为键是整数)。(提示,
[i for i in range(len(array_1))]
可以是
range(len(array_1))
。但我怀疑您的问题是因为
dict(dict_A[t])
只对字典值进行了粗略的复制。事实上,我怀疑您的整个方法可以通过简单地使用多维
numpy
数组和
np.random
来改进。但是您确实需要描述您试图完成的任务。我感觉这是一个XY问题。很抱歉造成混淆。函数会更新_A()和update_B()只需修改t+1的部分词典。但你是对的,制作深度副本解决了这个问题。正如建议的那样,我将切换到使用numpy数组。这对我来说似乎更直观。非常感谢!