我一直在寻找一个食谱/示例来索引元组列表,而无需修改装饰、排序、未装饰方法。
例如:
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)
显然,这似乎不是很 Pythonic。我一直在尝试寻找示例或见解,认为我应该能够使用一些神奇的东西来直接获取索引。到目前为止还没有这样的运气。
请注意,我知道我可以更直接地采取我的方法,而不会产生 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