Функция сортировки
Python стабильна, это означает, что если два элемента сравниваются друг с другом, их относительные позиции не меняются. Элементы меняют положение только в том случае, если они сравниваются неравно друг с другом.
Кроме того, сортировка принимает необязательный параметр key
, который представляет собой функцию, определяющую, какие значения сортировать следует сравнивать. Вы можете определить полную функцию для этого, но обычно определить короткую лямбда-функцию, если вы собираетесь использовать ее только один раз.
Соберите их вместе, и вы можете сначала отсортировать списки по их вторым элементам затем сортируйте их во второй раз по первым элементам. Относительные позиции из первого сорта будут сохраняться после второго.
a = [
['abc', 5],
['abd', 21],
['abb', 10],
['abc', 3],
['abb', 15],
['abd', 20]
]
# Sort by second element first, in descending order
a = sorted(a, key=lambda x: x[1], reverse=True)
# Then sort by first element, in ascending order
a = sorted(a, key=lambda x: x[0])
print(a) # [['abb', 15], ['abb', 10], ['abc', 5], ['abc', 3], ['abd', 21], ['abd', 20]]