查找列表中第一项与元组中的第一项匹配的第一项

时间:2014-03-05 16:22:36

标签: python

我有几千个无序元组的列表,格式为

(mainValue, (value, value, value, value))

鉴于主要价值(可能存在或可能不存在),是否有 很好'方式,除了遍历查看和递增值的每个项目,我可以生成一个匹配的元组索引列表,如下所示:

index = 0;
for destEntry in destList:
if destEntry[0] == sourceMatch:
    destMatches.append(index)
index = index + 1

所以我可以将子值与另一组进行比较,并在必要时从列表中删除最佳匹配。 这很好,但看起来python会有更好的方法!

编辑: 根据这个问题,在写原始问题时,我意识到我可以使用字典而不是第一个值(事实上这个列表在另一个字典中),但在删除问题之后,我仍然想知道如何去做作为一个元组。

1 个答案:

答案 0 :(得分:2)

使用列表理解,您的for循环可以缩减为此表达式:

destMatches = [i for i,destEntry in enumerate(destList) if destEntry[0] == sourceMatch]

您还可以使用内置函数中的filter() 1 来过滤数据:

destMatches = filter(lambda destEntry:destEntry[0] == sourceMatch, destList)

1 :在Python 3中filter是一个类,并返回filter object