Возвращает кортеж с наименьшим значением 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)