web-dev-qa-db-ja.com

python辞書の更新方法

リスト文字列タグがあります。

キーをタグ文字列、値を配列インデックスとして辞書を初期化しようとしています。

for i, ithTag in enumerate(tag):
    tagDict.update(ithTag=i)

上記は私を返します{'ithTag':608} 608は608番目のインデックスです

私の問題は、iが変数として解釈されている間、Pythonは "ithTag"を変数ではなく文字列として扱っていることです。

私は混乱しています、この種の特定の質問をグーグルで検索するのはちょっと難しいです。この質問のタイトルを正しく表現したといいのですが、

ありがとう!

18
freshWoWer

あなたは実際にこれをしたいです:

for i, tag in enumerate(tag):
    tagDict[tag] = i

.update()メソッドは、単一のキーと値のペアを変更するためではなく、別のディクショナリを使用してディクショナリを更新するために使用されます。

46
Jerub

賢くなりたい場合:

tagDict.update(map(reversed, enumerate(tag)))

更新してくれたBrianに感謝します。これは、反復バージョンよりも明らかに最大5%高速です。

(編集:私の答えが間違っていたことを指摘してくれてありがとうsaverio(現在は修正されています)。おそらく最も効率的/ Pythonicな方法はTorstenMarekの答えであり、わずかに変更されています:

tagDict.update((t, i) for (i,t) in enumerate(tag))

17
Claudiu

それはワンライナーです:

tagDict = dict((t, i) for i, t in enumerate(tag))
12
Torsten Marek

私はあなたが欲しいものはこれだと思います:

for i, ithTag in enumerate(tag):
    tagDict.update({ithTag: i})
2
Vanuan

私はこれがあなたがやりたいことだと思います:

d = {}
for i, tag in enumerate(ithTag):
   d[tag] = i
2
mbesso

試してみてください

tagDict[ithTag] = i
2
Vinko Vrsalovic