Список сортировки Python

Я сейчас питон и совершенно новый для этого языка.

Сортировка списка на основе двух критериев. Список слов возвращает список с теми же словами в порядке длины (от самого длинного до кратчайшего), второй критерий сортировки должен быть в алфавитном порядке. Подсказка: вам нужно подумать о двух функциях.

Кто-нибудь может мне с этим помочь?

5 Solutions collect form web for “Список сортировки Python”

Вам нужен только один вызов для sort , потому что Python автоматически сортирует кортежи лексикографически. То есть, если вы попросите Python сравнить два кортежа, они будут упорядочивать их по их первому элементу, за исключением случаев, когда они сравниваются равными, и в этом случае он будет упорядочивать их по их второму элементу, за исключением случаев, когда они сравниваются в одном случае …

Вы хотите отсортировать список элементов за вычетом их длины, а затем в алфавитном порядке, так что вы хотите, чтобы ключ строки s был кортежем (-len(s), s) . Следовательно:

 >>> l = ['aa','aaa','aaaa','b','bb','z','ccc'] >>> sort_key = lambda s: (-len(s), s) >>> l.sort(key=sort_key) >>> l ['aaaa', 'aaa', 'ccc', 'aa', 'bb', 'b', 'z'] 

дизайн

Ключевое слово здесь – « стабильный алгоритм сортировки ». Подумайте о двух стабильных функциях сортировки:

  • одна сортировка по длине (сохранение относительного порядка записей с одинаковой длиной),
  • другая сортировка в алфавитном порядке.

В каком порядке вы могли бы объединить их для получения желаемого порядка?

Реализация

Как уже упоминалось, первую функцию сортировки можно назвать так:

 list.sort(key=len, reverse=True) 

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

 list.sort() 

Этого должно быть достаточно, чтобы написать полное решение.

результат

Если вы правильно комбинируете функцию, вы должны получить следующее:

 >>> l = ['aaa', 'fff', 'bbb', 'ddd', 'e', 'cccc'] # ... sorting functions combined in the right way ... >>> l ['cccc', 'aaa', 'bbb', 'ddd', 'fff', 'e'] 

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

 >>> l = ['aa','aaa','aaaa','b','bb','z','ccc'] >>> l.sort(key=len,reverse=True) >>> l ['aaaa', 'ccc', 'aaa', 'bb', 'aa', 'z', 'b'] >>> l.sort() >>> l ['aa', 'aaa', 'aaaa', 'b', 'bb', 'ccc', 'z'] >>> 

подсказки:

 mylist = ['one', 'three', 'zero'] mylist.sort(key=len) print mylist mylist.reverse() print mylist mylist.sort() print mylist otherlist = [(2, 'a'), (1, 'a'), (3, 'b'), (3, 'a')] otherlist.sort() print otherlist 
 a = отсортировано ([["foo", "o"], ["bar2", "yadda"], ["allo", "as3r"]], key = len)
 b = отсортировано (a)

Я считаю, что работает … я новичок в python

  • Сортировка баллов и названий в алфавитном порядке, в среднем, от наивысшего до самого низкого
  • Python: как работает функция cmp_to_key functools?
  • Список списков со списком python
  • NumPy или словарь?
  • Как я могу частично отсортировать список Python?
  • Как отсортировать OrderedDict of OrderDict - Python
  • Функция heapq.merge () для списка отсортированных файлов
  • Сортировка списка списков в Python
  • Python - лучший язык программирования в мире.