Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查找元组中第一项匹配的列表中的第一项_Python - Fatal编程技术网

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个浮点值进行比较,以计算出最接近的值。我只需要一个匹配第一个值的列表,这样我就可以在其他地方进行比较