2017-09-02 71 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