繁体   English   中英

如何在元组列表中查找用户定义的最小值和最大值

[英]How to find user-defined minimum and maximum value in a list of tuples

我有一个元组列表,每个元组都有2个整数:

a_list=[(20, 1), (16, 0), (21, 0), (20, 0), (24, 0), (25, 1)]

我正在寻找的是一种找到并返回第二项最小,第一项最大的元组的方法。 在上面的列表中,它将是元组(24, 0)

您的示例足以使以下方法正常工作

>>> 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)

它假设一个事实是

  1. 根据索引在字典上比较元组

    doc

    序列类型也支持比较。 特别是,通过比较相应的元素按字典顺序比较了元组和列表。 这意味着要比较相等,每个元素都必须比较相等,并且两个序列必须具有相同的类型且长度相同

  2. 数字的顺序反映符号的变化

这有效:

>>> 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)
>>>

假设我的理解是正确的,那么这就是您需要做的。

找到最小的第二个值:

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])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM