我可以使用 Python 的 Min 函数返回所有最小元组的列表吗?

Hou*_*ini 2 python iterable tuples python-3.x

假设我有一个元组列表,如下所示:

listo = [('a','1'),('b','0'),('c','2'),('d','0')]
Run Code Online (Sandbox Code Playgroud)

如果我想要最低的元组,基于每个元组的第二个索引,我可以使用函数自定义 min 函数lambda,如下所示:

min(listo, key=lambda x: x[1])
Run Code Online (Sandbox Code Playgroud)

按照目前的情况,这段代码将返回:

In [31]: min(listo, key=lambda x: x[1])
Out[31]: ('b', '0')
Run Code Online (Sandbox Code Playgroud)

但这只给了我一个元组,而且只是它遇到的第一个元组。如果我想要所有元min组怎么办?所以它返回类似:

In [31]: min(listo, key=lambda x: x[1])
Out[31]: [('b', '0'),('d','0')]
Run Code Online (Sandbox Code Playgroud)

关于如何实现这一目标有什么建议吗?

Dom*_*k C 5

您可以首先搜索一个最小值,然后根据找到的最小值查找另一个最小值。

listo = [('a','1'),('b','0'),('c','2'),('d','0')]
minValue = min(listo, key=lambda x: x[1])[1]
minValueList = [x for x in listo if x[1] == minValue]
Run Code Online (Sandbox Code Playgroud)

另一种方法可能是创建您自己的最小函数,该函数使用某种最小值列表,但对于更大的问题可能会慢得多。