Python:尝试使用范围中随机选择的值创建n个词典

时间:2017-04-14 10:52:09

标签: python dictionary random

所以我试过了:

#

这给了我一本来自t的随机词典字典,但它们并不是唯一的,所以只是一个字典,里面装满了一个版本的。

我正在寻找的是一个字典,其键是1,2,3 ... n,其值是字典t。但是我需要对循环的每次迭代都不同。

感谢您阅读

1 个答案:

答案 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]都映射到生成的字典。