我一直在寻找一个食谱/示例来索引元组列表,而不用修改装饰,排序,未整理的方法。在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