Сортировка списка списков по 3-му, 2-му, 1-му элементам - PullRequest
1 голос
/ 04 октября 2019

У меня есть список списков, таких как:

[[5, 8, 12], [6, 8, 10], [9, 20, 31], [14, 16, 13],...,[19,9,44]]

Как я могу отсортировать это (предпочтительно в Python) в порядке возрастания по 3-му элементу в каждом подмассиве, затем по 2-му элементу в eacy-подмассиве, затемпервым?

Ответы [ 2 ]

4 голосов
/ 04 октября 2019

Вы можете использовать sorted с itemgetter в аргументе key для извлечения элементов в обратном порядке:

from operator import itemgetter
l = [[5, 8, 12], [6, 8, 10], [9, 20, 31], [14, 16, 13],[19,9,44]]

sorted(l, key=itemgetter(2,1,0))
# [[6, 8, 10], [5, 8, 12], [14, 16, 13], [9, 20, 31], [19, 9, 44]]

Или с помощью лямбда-функции:

sorted(l, key=lambda x: x[::-1])
# [[6, 8, 10], [5, 8, 12], [14, 16, 13], [9, 20, 31], [19, 9, 44]]
0 голосов
/ 04 октября 2019

Используйте функцию ключа, которая извлекает 3-й элемент из каждого подсписка и использует его.

l = [[5, 8, 12], [6, 8, 10], [9, 20, 31], [14, 16, 13],...,[19,9,44]]
l.sort(key=lambda x: x[2])

Или вы можете использовать itemgetter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...