Python 查找元组中第一项匹配的列表中的第一项
我有一个几千个无序元组的列表,它们的格式是Python 查找元组中第一项匹配的列表中的第一项,python,Python,我有一个几千个无序元组的列表,它们的格式是 (mainValue, (value, value, value, value)) 给定一个主值(可能存在也可能不存在),是否有一种“nice”方法,除了遍历每个项目并增加一个值之外,我可以生成一个元组索引列表,匹配如下: index = 0; for destEntry in destList: if destEntry[0] == sourceMatch: destMatches.append(index) index = index +
(mainValue, (value, value, value, value))
给定一个主值(可能存在也可能不存在),是否有一种“nice”方法,除了遍历每个项目并增加一个值之外,我可以生成一个元组索引列表,匹配如下:
index = 0;
for destEntry in destList:
if destEntry[0] == sourceMatch:
destMatches.append(index)
index = index + 1
因此,我可以将子值与另一组值进行比较,并在必要时从列表中删除最佳匹配项。
这很好,但看起来python会有更好的方法
编辑:
根据问题,在编写原始问题时,我意识到我可以使用字典而不是第一个值(事实上,此列表在另一个字典中),但在删除问题后,我仍然想知道如何将其作为元组来执行。通过列表理解,您的
for
循环可以简化为以下表达式:
destMatches = [i for i,destEntry in enumerate(destList) if destEntry[0] == sourceMatch]
您还可以使用1个内置函数来过滤数据:
destMatches = filter(lambda destEntry:destEntry[0] == sourceMatch, destList)
1:在Python3中,filter是一个类,返回一个
filter对象
,那么您真的是指tuple吗?因为当你说“无序”时,它显示为一个列表,你的意思是匹配是任何具有这4个值的元组吗?那么(1,2,3,4)
是否与(4,3,2,1)
匹配?您能否提供对您的目标的见解?使用不同的数据结构可能会更好。是的,我把它写成了一个列表,我指的是一个元组。无序指的是第一个值是无序的。元组中的4个值是大的浮点值,与另一组4个浮点值进行比较,以计算出最接近的值。我只需要一个匹配第一个值的列表,这样我就可以在其他地方进行比较