質問

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

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

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})
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top