我有一個列表字符串標記。python字典更新方法
我想初始化一個字典,把鍵作爲標記字符串和值作爲數組索引。
for i, ithTag in enumerate(tag):
tagDict.update(ithTag=i)
上述返回箱{「ithTag」:608} 608是第608次索引
我的問題是,雖然i被解釋爲一個變量,Python是治療「ithTag」作爲一個字符串而不是一個變量。
我很困惑,這種類型的具體問題很難。我希望我正確地回答了這個問題的標題,
謝謝!
我有一個列表字符串標記。python字典更新方法
我想初始化一個字典,把鍵作爲標記字符串和值作爲數組索引。
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()方法用於使用其他字典,而不是改變一個鍵/值對更新的字典。
我想這是你想要做什麼:
d = {}
for i, tag in enumerate(ithTag):
d[tag] = i
嘗試
tagDict[ithTag] = i
如果你要聰明一點:
tagDict.update(map(reversed, enumerate(tag)))
感謝Brian進行更新。這顯然比迭代版本快5%。
(編輯:您指出我的答案是不正確的(現已修復)可能是最有效的/ Python的方式將託斯滕馬立克氏回答感謝薩維里奧,略作修改:
tagDict.update((t, i) for (i,t) in enumerate(tag))
)
實際上,update()可以直接使用一個序列,因此不需要構造中間字典。做tagDict.update(枚舉(標籤))實際上比迭代版本稍快(〜5%)。 – Brian 2008-10-06 08:34:49
這是一個班輪:
tagDict = dict((t, i) for i, t in enumerate(tag))
我想你想要的是這樣的:
for i, ithTag in enumerate(tag):
tagDict.update({ithTag: i})
這是一個幾乎可以解決的問題。我認爲只有選擇的答案比[這一個]更糟糕(http://stackoverflow.com/a/179005/131120)。想要改變或解釋選擇for-loop答案背後的原因嗎? – erikbwork 2013-12-17 12:31:27
我選擇了那個,因爲傑羅布先回答了;我只是馬上標記出來。同樣來自C#/ Java背景,Jerub的答案看起來更加熟悉,我喜歡他解釋爲什麼.update()不適合我。 – freshWoWer 2014-01-04 00:05:20