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

时间:2016-05-09 08:10:03

标签: python list tuples min

我正在尝试从元组列表中返回元组中最小的第二个索引值(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])

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

1 个答案:

答案 0 :(得分:17)

在从密钥返回的元组中包含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)