提案されているように、最初のpythonプログラムとしてテキストアドベンチャーゲームを書いています。犬が食べる可能性のあるもの、何が悪いのか、どの程度悪いのかのリストが欲しい. だから、私はこれをやろうと思った:
badfoods = []
keys = ['Food','Problem','Imminent death']
food1 = ['alcohol', 'alcohol poisoning', 0]
food2 = ['anti-freeze', 'ethylene glycol', 1]
food3 = ['apple seeds', 'cyanogenic glycosides', 0]
badfoods.append(dict(zip(keys,food1)))
badfoods.append(dict(zip(keys,food2)))
badfoods.append(dict(zip(keys,food3)))
実際に入れたい食べ物は約40種類あります。私もこれを行うことができることを知っています:
[{'Food':'alcohol', 'Problem':'alcohol poisoning', 'Imminent death':0},
{'Food':'anti-freeze', 'Problem':'ethylene glycol', 'Imminent death':1}
{'Food':'apple seeds, 'Problem':'cyanogenic glycosides', 'Imminent death':0}] ]
YAML の使用に関するこちらの投稿も読みました。これは魅力的です: ネストされた辞書を実装する最良の方法は何ですか? しかし、キーを大量に書き込むことを避ける方法はまだわかりません。
さらに、追加を 40 回書くことを避けるための元のアプローチを理解できないことに腹を立てています。つまり、次のとおりです。
def poplist(listname, keynames, name):
listname.append(dict(zip(keynames,name)))
def main():
badfoods = []
keys = ['Food','Chemical','Imminent death']
food1 = ['alcohol', 'alcohol poisoning', 0]
food2 = ['anti-freeze', 'ethylene glycol', 1]
food3 = ['apple seeds', 'cyanogenic glycosides', 0]
food4 = ['apricot seeds', 'cyanogenic glycosides', 0]
food5 = ['avocado', 'persin', 0]
food6 = ['baby food', 'onion powder', 0]
for i in range(5):
name = 'food' + str(i+1)
poplist(badfoods, keys, name)
print badfoods
main()
forループが文字列を作成してから関数に供給し、関数poplistがそれを変数名として認識しないため、機能しないと思います。ただし、これを修正する方法があるかどうか、または YAML を使用する必要があるか、キーを毎回書き出す必要があるかどうかはわかりません。私は困惑しているので、どんな助けも大歓迎です!