我有一个元组列表,每个元组有2个整数:
a_list=[(20, 1), (16, 0), (21, 0), (20, 0), (24, 0), (25, 1)]
我正在寻找的是一种查找和返回具有最大第一项的最小第二项的元组的方法。在上面的列表中,它将是元组(24, 0)
。
答案 0 :(得分:4)
您的示例对于以下方法起作用是微不足道的
>>> a_list=[(20, 1), (16, 0), (21, 0), (20, 0), (24, 0), (25, 1)]
>>> max(a_list, key=lambda e:(-e[-1],e[0]))
(24, 0)
它假设
的事实根据索引
比较元组词典请参阅doc:
序列类型也支持比较。尤其是元组和 列表通过比较相应的词典比较 元素。这意味着要比较相等,每个元素必须进行比较 等于和两个序列必须是相同类型并且具有相同的 长度
对符号变更的数字排序
答案 1 :(得分:0)
这有效:
>>> a_list = [(20, 1), (16, 0), (21, 0), (20, 0), (24, 0), (25, 1)]
>>> a = min(x[1] for x in a_list)
>>> max(b for b in a_list if b[1] == a)
(24, 0)
>>>
答案 2 :(得分:0)
假设我的理解是正确的,那么这就是你需要做的事情。
找到最小的第二个值:
lowest = min(a_list, key=lambda t: t[1])[1]
然后找到所有具有该项目的项目作为第二项
having_lowest = filter(lambda t: t[1] == lowest, a_list)
然后找到第一个数字最高的那个
having_max = max(having_lowest, key=lambda t: t[0])