リスト文字列タグがあります。
キーをタグ文字列、値を配列インデックスとして辞書を初期化しようとしています。
for i, ithTag in enumerate(tag):
tagDict.update(ithTag=i)
上記は私を返します{'ithTag':608} 608は608番目のインデックスです
私の問題は、iが変数として解釈されている間、Pythonは "ithTag"を変数ではなく文字列として扱っていることです。
私は混乱しています、この種の特定の質問をグーグルで検索するのはちょっと難しいです。この質問のタイトルを正しく表現したといいのですが、
ありがとう!
あなたは実際にこれをしたいです:
for i, tag in enumerate(tag):
tagDict[tag] = i
.update()メソッドは、単一のキーと値のペアを変更するためではなく、別のディクショナリを使用してディクショナリを更新するために使用されます。
賢くなりたい場合:
tagDict.update(map(reversed, enumerate(tag)))
更新してくれたBrianに感謝します。これは、反復バージョンよりも明らかに最大5%高速です。
(編集:私の答えが間違っていたことを指摘してくれてありがとうsaverio(現在は修正されています)。おそらく最も効率的/ Pythonicな方法はTorstenMarekの答えであり、わずかに変更されています:
tagDict.update((t, i) for (i,t) in enumerate(tag))
)
それはワンライナーです:
tagDict = dict((t, i) for i, t in enumerate(tag))
私はあなたが欲しいものはこれだと思います:
for i, ithTag in enumerate(tag):
tagDict.update({ithTag: i})
私はこれがあなたがやりたいことだと思います:
d = {}
for i, tag in enumerate(ithTag):
d[tag] = i
試してみてください
tagDict[ithTag] = i