说我有一个元组列表,如下所示:
listo = [('a','1'),('b','0'),('c','2'),('d','0')]
如果我想要最低元组,基于每个元组的第二个索引,我可以使用lambda
函数自定义min函数,如下所示:
min(listo, key=lambda x: x[1])
目前,此代码将返回:
In [31]: min(listo, key=lambda x: x[1])
Out[31]: ('b', '0')
但这只给了我一个元组,只有它遇到的第一个元组。如果我想要所有min
元组怎么办?所以它返回的内容如下:
In [31]: min(listo, key=lambda x: x[1])
Out[31]: [('b', '0'),('d','0')]
关于如何实现这一目标的任何建议?
答案 0 :(得分:1)
您可以先搜索一个最小值,然后根据找到的最小值查找另一个值。
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]
另一种方法可能是制作你自己的最小函数,它使用某种最小值列表,但对于更大的问题可能会慢得多。