У меня есть список списков списков в python. Мне нужно отсортировать наивысший уровень списков на основе одного из значений на самых низких уровнях.Сортировка списка списков Python
Для игрушечной модели, мой список будет создан первым в списке small
, который представляет собой список, содержащий списки с тремя пунктами каждые:
small = [["dog", 5, 6], ["cat", 391, 130], ["pig", 45, 2]...]`
Тогда есть больший список, large
, который создается путем добавления малый список и другой элемент вместе:
large.append([["category 1"], small])`
Это делается в цикле, так что, если петля имеет счетчик 5, он будет проходить через функцию, которая создает список small
5 раз, каждый раз, добавляя это к li st large
.
Моя цель - сортировать окончательный список на основе элемента в наименьшем списке (список, содержащий список small
). В настоящее время я печатаю список large
по строкам, с списком small
, заказанным index 1
списков в нем (см.: 5,10,15 на заказ, 1,3,6 на заказ и т. Д.), Поэтому мой вывод это:
>category 1:
>['Dog', 5, 6]
>['Pig', 10, 2]
>['Cat', 15, 130]
>['Buffalo', 20, 1]
>['Newt', 25, 45]
>category 2:
>['Newt', 1, 1092]
>['Cat', 3, 352]
>['Pig', 6, 34]
>['Buffalo', 9, 12]
>['Dog', 12, 5]
>category 3:
>['Buffalo', 2, 12]
>['Pig', 4, 37]
>['Cat', 6, 34]
>['Newt', 8, 150]
>['Dog', 10, 52]
Однако, я хотел бы напечатать large
список в порядке от наименьшего к наибольшему, если смотреть на элемент в index 1
в списке, который составляет наименьший массив. Так что мой идеальный результат будет таким:
>category 2:
>['Newt', 1, 1092]
>['Cat', 3, 352]
>['Pig', 6, 34]
>['Buffalo', 9, 12]
>['Dog', 12, 5]
>category 3:
>['Buffalo', 2, 12]
>['Pig', 4, 37]
>['Cat', 6, 34]
>['Newt', 8, 150]
>['Dog', 10, 52]
>category 1:
>['Dog', 5, 6]
>['Pig', 10, 2]
>['Cat', 15, 130]
>['Buffalo', 20, 1]
>['Newt', 25, 45]
Я попытался сортировки с itemgetter()
, однако, при сортировке large
с itemgetter()
, я могу только сортировать элементы в списке large
, которые [category x]
и [[a,b,c], [a,b,c]]
. Есть ли способ получить доступ к наименьшему уровню элементов для itemgetter? или другой способ сортировки этого списка?
Спасибо.
Сначала напишите как обычный цикл, а затем посмотрите, как сделать его более простым или более эффективным. –
Вложенная индексация? 'large [i] [j] [1]' – f5r5e5d