質問
リスト文字列タグがあります。
キーをタグ文字列、値を配列インデックスとして辞書を初期化しようとしています。
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)))
更新してくれたブライアンに感謝します。これは、反復バージョンよりも明らかに5%高速です。
(編集:私の答えを指摘してくれたsaverioに感謝します(現在修正済み)。おそらく最も効率的/ Python的な方法は、わずかに修正したTorsten Marekの答えでしょう:
tagDict.update((t, i) for (i,t) in enumerate(tag))
)
ワンライナーです:
tagDict = dict((t, i) for i, t in enumerate(tag))
これがあなたがしたいことだと思います:
d = {}
for i, tag in enumerate(ithTag):
d[tag] = i
試用
tagDict[ithTag] = i
あなたが望むのはこれだと思います:
for i, ithTag in enumerate(tag):
tagDict.update({ithTag: i})
所属していません StackOverflow