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

関連する問題