辞書があり、キーと値を動的に挿入したいのですが、どうにかできませんでした。問題は、更新メソッドを使用するとペアが追加されないが、以前の値が削除されるため、ここで辞書を印刷するときに最後の値しか得られないということです。
i = 0
for o in iterload(f):
i=i+1
mydic = {i : o["name"]}
mydic.update({i : o["name"]})
for k, v in mydic.items():
print(k,v)
print(mydic)
fは、pythonコードを使用して解析しているファイルです。その結果、
{3: 'toto'}
これが最後の要素です。私の辞書にすべての要素を含める解決策はありますか
前もって感謝します
別の質問があります
入力値がディクショナリのキーと等しいかどうかを確認する必要があります。そうである場合は、ファイルの解析を続行して他の情報を取得するために、このキーの値を取得する必要があります。
これが私のコードです:
f = open('myfile','r')
nb_name = input("\nChoose the number of the name :")
for o in iterload(f):
if o["name"] == mydic[nb_name]:
...
KeyErrorが発生する
Traceback (most recent call last):
File ".../test.py", line 37, in <module>
if o["name"] == mydic[nb_name]:
KeyError: '1'
私は問題を理解していません
次の行を削除します。
mydic = {i : o["name"]}
ループの前に次を追加します。
mydic = {}
それ以外の場合は、すべての反復で真新しい1要素辞書を作成します。
また、次のとおりです。
mydic.update({i : o["name"]})
より簡潔に書かれています
mydic[i] = o["name"]
最後に、ループ全体を辞書内包として書き直すことができることに注意してください。
mydic = {i+1:o["name"] for i,o in enumerate(iterload(f))}
len()
を使用して値を挿入できます:
#!/usr/bin/python
queue = {}
queue[len(queue)] = {'name_first': 'Jon', 'name_last': 'Doe'}
queue[len(queue)] = {'name_first': 'Jane', 'name_last': 'Doe'}
queue[len(queue)] = {'name_first': 'J', 'name_last': 'Doe'}
print queue
@ NPEが問題を指摘しました コード内(各反復でdictを再定義)。
Dict(Python 3コード)を生成するもう1つの方法を次に示します。
_from operator import itemgetter
mydict = dict(enumerate(map(itemgetter("name"), iterload(f)), start=1))
_
_KeyError: '1'
_について:input()
はPython 3で文字列を返しますが、ディクショナリmydict
は整数を期待しています。文字列を整数に変換するには、 int
を呼び出す:
_nb_name = int(input("\nChoose the number of the name :"))
_