从元组列表中返回具有最小 y 值的元组

Posted

技术标签:

【中文标题】从元组列表中返回具有最小 y 值的元组【英文标题】:Return tuple with smallest y value from list of tuples 【发布时间】:2016-09-03 18:52:13 【问题描述】:

我正在尝试从元组列表中返回一个最小的第二个索引值(y 值)的元组。如果有两个 y 值最小的元组,则选择 x 值最大的元组(即第一个索引)。

例如,假设我有元组:

x = [(2, 3), (4, 3), (6, 9)]

返回的值应该是(4, 3)(2, 3) 是候选,因为x[0][1]3(与x[1][1] 相同),但是x[0][0] 小于x[1][0]

到目前为止我已经尝试过:

start_point = min(x, key = lambda t: t[1])

但是,这只会检查第二个索引,如果两个元组的第二个索引相等,则不会比较两个元组的第一个索引。

【问题讨论】:

你可以尝试类似:min(x, key=lambda t: [t[1], -t[0]]) 【参考方案1】:

在从键返回的元组中包含x 值;当y 值存在平局时,将使用键中的第二个元素。要反转比较(从最小到最大),只需否定该值:

min(x, key=lambda t: (t[1], -t[0]))

毕竟-4 小于-2

演示:

>>> x = [(2, 3), (4, 3), (6, 9)]
>>> min(x, key=lambda t: (t[1], -t[0]))
(4, 3)

【讨论】:

@ByteCommander:因为在平局中应该选择 较大 x 值,而不是较小的值。 谢谢,完美运行。而且只需要一行!

以上是关于从元组列表中返回具有最小 y 值的元组的主要内容,如果未能解决你的问题,请参考以下文章

返回与字典中第三个值最小的元组对应的键

从元组的元组中创建一个列表

从元组python 3列表中只获取整数

使用min函数从元组列表中获取多个元组

通过Linq查询从双值的元组返回一个List

如果子字符串存在,则从元组中删除项目