@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)]
|
В этом случае сначала происходит сортировка по первому элементу кортежа (по алфавиту в данном примере), а затем, если первые элементы одинаковы, по второму элементу (по возрастанию в данном примере).