所以我试过了:
#
这给了我一本来自t的随机词典字典,但它们并不是唯一的,所以只是一个字典,里面装满了一个版本的。
我正在寻找的是一个字典,其键是1,2,3 ... n,其值是字典t。但是我需要对循环的每次迭代都不同。
感谢您阅读
答案 0 :(得分:1)
Python并不是因为你引用它而重新运行字典文字。 t
只不过是您在开始时创建的单个词典。
解决方案是在字典理解中从头开始创建一个新字典(每次迭代都会重新执行键和值表达式):
n=15
new_dict = {k: {'va1':r.randint(0,50),'va2':r.randint(0,15),'va3':r.randint(0,10)} for k in range(n)}
print(new_dict)
您可能希望将嵌套字典创建到函数中:
def random_values_dict():
return {'va1':r.randint(0,50),'va2':r.randint(0,15),'va3':r.randint(0,10)}
new_dict = {k: random_values_dict() for k in range(n)}
请注意,创建字典时没有什么意义,其中键是从0开始的连续数字。列表的空间效率更高,并且具有将这些数字映射到值的相同性能特征:
new_list = [random_values_dict() for k in range(n)]
在这种情况下, new_list[0]
和new_dict[0]
都映射到生成的字典。