сортировка списка с подсписками в Python - PullRequest
1 голос
/ 26 марта 2019

Итак, у меня есть этот список с подсписками:

[[39, 4, 43], [23, 3, 26], [46, 5, 51], [66, 15, 51], [66, 7, 73], [10, 2, 12], [79, 8, 87]]

Мне нужно отсортировать списки в порядке третьего элемента в каждом подсписке. Но если два или более из них равны, как в этом случае:

[46, 5, 51], [66, 15, 51]

алгоритм сортировки должен сначала поместить подсписок с наибольшим первым элементом, поэтому желаемый результат должен быть таким:

 [[79, 8, 87],[66, 7, 73],[66, 15, 51],[46, 5, 51],[39, 4, 43],[23, 3, 26],[10, 2, 12]]

Какой-нибудь совет, чтобы пройти через это? спасибо или ваше время и помощь

Ответы [ 2 ]

8 голосов
/ 26 марта 2019

Вы можете настроить свой порядок сортировки в виде кортежа следующим образом:

l = [[39, 4, 43], [23, 3, 26], [46, 5, 51], [66, 15, 51], [66, 7, 73], [10, 2, 12], [79, 8, 87]]

sorted(l, key = lambda x: (x[2],x[0]), reverse=True)

результат:

[[79, 8, 87], [66, 7,73], [66, 15, 51], [46, 5, 51], [39, 4, 43], [23, 3, 26], [10, 2, 12]]

1 голос
/ 26 марта 2019

Существует также itemgetter для такой сортировки:

from operator import itemgetter

l = [[39, 4, 43], [23, 3, 26], [46, 5, 51], [66, 15, 51], [66, 7, 73], [10, 2, 12], [79, 8, 87]]

sorted(l, key=itemgetter(2, 0), reverse=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...