我一直在尋找一個食譜/示例來索引元組列表,而不用修改裝飾,排序,未整理的方法。在Python中是否有方法通過容器的元素來索引容器列表(元組,列表,字典)?
例如:
l=[(a,b,c),(x,c,b),(z,c,b),(z,c,d),(a,d,d),(x,d,c) . . .]
我已經使用的方法是建立一個字典使用所述第二元件的defaultdict
from collections import defaultdict
tdict=defaultdict(int)
for myTuple in l:
tdict[myTuple[1]]+=1
然後,我必須建立僅由第二列表列表中每個項目的元組中的項目。雖然有許多的方式來獲得有一個簡單的方法是:
tempList=[myTuple[1] for myTuple in l]
,然後生成tdict
indexDict=defaultdict(dict)
for key in tdict:
indexDict[key]['index']=tempList.index(key)
每個項目的索引顯然,這似乎不是很Python的。我一直在試圖找到例子或見解,認爲我應該能夠使用神奇的東西來直接獲取索引。目前沒有這樣的運氣。
請注意,我知道我可以更直接地採取我的方法,而不是生成tdict。
輸出可能是一個字典,該指數
indexDict={'b':{'index':0},'c':{'index':1},'d':{'index':4},. . .}
借鑑Nadia的迴應了很多,我認爲答案是否定後。
儘管她的回答很有效,但我認爲它比需要的更加複雜。我只是
def build_index(someList):
indexDict={}
for item in enumerate(someList):
if item[1][1] not in indexDict:
indexDict[item[1][1]]=item[0]
return indexDict
我很困惑你想要做什麼。你想要的輸出是什麼?你的代碼不工作 - 計數應該在行「tdict [myTuple [1]] + = count」是什麼? – 2009-05-27 21:27:55
你能提供一個預期的輸出或結構的例子嗎? – 2009-05-27 21:28:00
對不起 - 每次我創建一個字典來獲取一個項目的數量,我總是寫入+ =計數,然後將其修正爲+ = 1。我有一個腦細胞。 – PyNEwbie 2009-05-27 21:38:56