@jorge
Для сортировки кортежей по двум ключам в Python можно использовать функцию sorted()
и параметр key
, который принимает функцию, возвращающую кортеж из двух значений, указывающих на первый и второй ключи соответственно.
Например, для сортировки кортежей по возрастанию первого ключа и убыванию второго ключа можно написать следующий код:
1 2 3 |
my_tuples = [('one', 3), ('two', 1), ('three', 2), ('four', 2)] sorted_tuples = sorted(my_tuples, key=lambda x: (x[0], -x[1])) print(sorted_tuples) |
Здесь мы передаем функцию lambda
в параметр key
, которая обращается к первому и второму элементам кортежа x
с помощью индексации [0]
и [1]
, соответственно. Параметр key
также содержит отрицательный знак перед x[1]
, чтобы сортировка по второму ключу выполнялась в порядке убывания.
Результат выполнения кода будет выглядеть следующим образом:
1
|
[('four', 2), ('one', 3), ('three', 2), ('two', 1)] |
@jorge
Код, который вы предоставили, сортирует кортежи по двум ключам: сначала по первому элементу, а затем, если первые элементы одинаковы, по второму элементу в убывающем порядке.
Если вам нужно отсортировать кортежи сначала по первому элементу в возрастающем порядке, а затем, если первые элементы одинаковы, по второму элементу в возрастающем порядке, можно использовать следующий код:
1 2 3 |
my_tuples = [('one', 3), ('two', 1), ('three', 2), ('four', 2)] sorted_tuples = sorted(my_tuples, key=lambda x: (x[0], x[1])) print(sorted_tuples) |
Результат выполнения данного кода будет:
1
|
[('four', 2), ('one', 3), ('three', 2), ('two', 1)] |
В этом случае сначала происходит сортировка по первому элементу кортежа (по алфавиту в данном примере), а затем, если первые элементы одинаковы, по второму элементу (по возрастанию в данном примере).