Возвращает кортеж с наименьшим значением y из списка кортежей

Я пытаюсь вернуть кортеж наименьшее второе значение индекса (значение 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

Включить значение 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)