2017-04-14 40 views
0

所以我试图创建一个随机选择n值的字典:的Python:试图从一系列

import random as r 

t = {'va1':r.randint(0,50),'va2':r.randint(0,15),'va3':r.randint(0,10)} 
n=15 
for _ in range(n): 
    new_dict = {k:t for k in range(n)} 
print(new_dict) 

这给了我在t随机字典辞典,但他们不是唯一的,所以才一个完整的t版本的字典。

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

感谢您阅读

回答

1

Python不会因为您引用它而重新运行字典文字。 t不过是您在开始时创建的单个字典。

的解决方案是从头开始创建一个新的字典在字典解析(key和值表达式为每次迭代重新执行):

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]既地图在这种情况下,所产生的词典。