Сортировка списка списков по нескольким критериям

У меня есть список списков. Как можно быстро отсортировать сначала по возрастанию первого элемента, если они одинаковые, то по убыванию второго?

some_list = [[3, 1], [-1, 5], [-1, 9], [4, 8]]

out:

[[-1, 9], [-1, 5], [3, 1], [4, 8]]

UPD: я смог найти только такую сортировку, но второе значение там тоже сортируется по возрастанию:

some_list.sort(key=lambda x:(x[0], x[1]))

Ответы (1 шт):

Автор решения: Xander

Нужно просто в функцию ключа сортировки добавить минус ко второму элементу.

some_list.sort(key=lambda x:(x[0], -x[1]))
                                # ^^^ Вот так  

Потому что отсортировать элемент с обратным знаком по возрастанию - это то же самое, что отсортировать исходный элемент по убыванию.

→ Ссылка