2017-09-02 69 views
-2

我试图在下面的方法中制作一个列表的列表,希望能够通过索引号开始创建我的列表的列表。但错误当然是“名称dogdict没有定义。”如何用这种方法创建一个列表的列表

我该如何声明dogdict才能让它顺利运行?

import random 

slist=['big','medium','small'] 

for i in range(10): 
    dogdict[i]['name']=random.randint(1,100) 
    dogdict[i]['size']=random.choice(slist) 

print("it's dog time... a list of dict") 
for i in range(10): 
    print(i) 
    print(dogdict[i]) 
+0

有申报'dogdict',使这项工作没有简单的方法。您不能按索引分配到空列表。 – jonrsharpe

+0

非常感谢。你的句子“你不能通过索引分配到一个空的列表”当然是这里的基本教训。我想我长大了使用数组,我一直试图强制一个列表与数组相同。 – estephan500

回答

3

您不能将项目放入不存在的容器中。你首先必须初始化,那么你可以让追加在容器的添加新项目:

import random 

slist = ['big','medium','small'] 

dogdict = []   # initialize list 
for _ in range(10): # index is never used 
    d = {}   # initialize dict 
    d['name'] = random.randint(1,100) 
    d['size'] = random.choice(slist) 
    dogdict.append(d) 

当然,也有这样做的更优雅的方式。你可以使用一个列表理解建立将被放置在结果列表中的字典:

doglist = [{'name': random.randint(1,100), 'size': random.choice(slist)} 
                 for _ in range(10)] 
+0

非常感谢你,晶莹剔透!我知道附加方法在外面打电话给我,但我一直在想我可以用更机械的方式来做到这一点。理解真的对我也有帮助。巨大的感谢 – estephan500

+0

,我从来不知道,当for循环的索引不会有用时,我可以使用下划线。谢谢 – estephan500