Return 元组列表中具有最小 y 值的元组
Return tuple with smallest y value from list of tuples
我正在尝试 return 元组列表中最小的第二个索引值(y 值)的元组。如果有两个具有最低 y 值的元组,则 select 具有最大 x 值(即第一个索引)的元组。
例如,假设我有元组:
x = [(2, 3), (4, 3), (6, 9)]
值 returned 应该是 (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])
但是,这只检查第二个索引,如果两个元组的第二个索引相等,则不会比较第一个索引。
在键返回的元组中包含 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)
我正在尝试 return 元组列表中最小的第二个索引值(y 值)的元组。如果有两个具有最低 y 值的元组,则 select 具有最大 x 值(即第一个索引)的元组。
例如,假设我有元组:
x = [(2, 3), (4, 3), (6, 9)]
值 returned 应该是 (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])
但是,这只检查第二个索引,如果两个元组的第二个索引相等,则不会比较第一个索引。
在键返回的元组中包含 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)