файлов - Сортировать список списков по длине и значению в Python




сортировка по длине python (2)

Вам нужен ключ как:

lambda l: (len(l), l)

Как:

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

Тестовый код:

list1 = [[0, 4, 1, 5], [3, 1, 5], [4, 0, 1, 5]]
print(sorted(list1, key=lambda l: (len(l), l)))

list2 = [[4, 5, 2], [2, 5, 4], [2, 4, 5]]
print(sorted(list2, key=lambda l: (len(l), l)))

Результаты:

[[3, 1, 5], [0, 4, 1, 5], [4, 0, 1, 5]]
[[2, 4, 5], [2, 5, 4], [4, 5, 2]]

Как я могу отсортировать список Python (с подсписками)? Например, у меня есть следующий список:

list1 = [[0, 4, 1, 5], [3, 1, 5], [4, 0, 1, 5]]

После сортировки я ожидаю:

list1 = [[3, 1, 5], [0, 4, 1, 5], [4, 0, 1, 5]]

Другой пример. У меня есть следующий список:

list2 = [[4, 5, 2], [2, 5, 4], [2, 4, 5]]

После сортировки я ожидаю:

list2 = [[2, 4, 5], [2, 5, 4], [4, 5, 2]]

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

Я попробовал следующий код, который помог мне сортировать только по длине:

list1.sort(key=len)

Метод Python list.sort () является "стабильным", то есть относительный порядок элементов, сравниваемых равными, не изменяется. Поэтому вы также можете достичь желаемого порядка, дважды вызвав sort ():

>>> list1 = [[3, 1, 5], [0, 4, 1, 5], [4, 0, 1, 5]]
>>> list1.sort()  # sort by sublist contents
>>> list1.sort(key=len)  # sort by sublist length
>>> list1
[[3, 1, 5], [0, 4, 1, 5], [4, 0, 1, 5]]






list