Автор оригинала: Chris.
Проблема : Учитывая список строк. Сортируйте список строк в алфавитном порядке.
Пример:
['Frank', 'Alice', 'Bob'] --> ['Alice', 'Bob', 'Frank']
Решение : Используйте list.sort () Способ без аргумента для решения списка в лексикографическом порядке, который является обобщением алфавитного порядка (также относится ко второму, третьему, … символам).
lst = ['Frank', 'Alice', 'Bob'] lst.sort() print(lst) # ['Alice', 'Bob', 'Frank']
Попробуй сам:
Статьи по Теме:
- Окончательное руководство по спискам Python
Список Python сортирует в алфавитном случае нечувствителен к регистру
Проблема с помощью списка по умолчанию. SORT () или сортированной (списком) методом в том, что они считают капитализацию. Таким образом, это может привести к странным сортировке, как это:
lst = ['ab', 'Ac', 'ad'] lst.sort() print(lst) # ['Ac', 'ab', 'ad']
Интуитивно, вы ожидаете, что строка 'ab'
произойти до «AC»
, Правильно?
Чтобы игнорировать капитализацию, вы можете просто позвонить в x.lower ()
Способ на каждом элементе х
перед сортировкой списка.
Тем не менее, мой предпочтительный метод состоит в том, чтобы использовать ключевой аргумент для достижения того же в одной строке кода:
lst = ['ab', 'Ac', 'ad'] lst.sort(key=lambda x: x.lower()) print(lst) # ['ab', 'Ac', 'ad']
Если вам нравятся одноклассники, вам понравится моя новая книга «Python One-Listers» с Nostarch Press (Amazon Link ) Отказ
Список Python сортирует в алфавитном порядке
Вы можете поменять порядок списка, используя обратное ключевое слово. Установить Реверс = Ложь
Сортировать по возрастанию и установить Реверс = Правда
сортировать в порядке убывания.
lst = ['Frank', 'Alice', 'Bob'] lst.sort(reverse=False) print(lst) # ['Alice', 'Bob', 'Frank'] lst.sort(reverse=True) print(lst) # ['Frank', 'Bob', 'Alice']
Список Python сортирует по алфавиту и численно
Проблема : У вас есть список строк. Каждая строки содержит номер. Вы хотите, чтобы количество было численно сортировать (например, поставляется 100 после 20, а не ранее), но символы, чтобы сортировать в алфавитном порядке (например, 'C'
приходит до 'd'
).
Пример :
['alice 100', 'alice 20', 'bob 99'] --> ['alice 20', 'alice 100', 'bob 99'
Наивное решение (не работает): Используйте метод list.sort () для сортировки списка в алфавитном порядке:
lst = ['alice 100', 'alice 20', 'bob 99'] lst.sort() print(lst) # ['alice 100', 'alice 20', 'bob 99']
Потому что номер 100 наступает до 20 в алфавитном порядке, строка «Алиса 100»
размещается до «Алиса 20»
Отказ
Решение : Я нашел это Код на Stackoverflow, который красиво демонстрирует, как это сделать:
import re def sorted_nicely(l): """ Sort the given iterable in the way that humans expect.""" convert = lambda text: int(text) if text.isdigit() else text alphanum_key = lambda key: [convert(c) for c in re.split('([0-9]+)', key)] l.sort(key = alphanum_key) lst = ['alice 100', 'alice 20', 'bob 99'] sorted_nicely(lst) print(lst) # ['alice 20', 'alice 100', 'bob 99']
Идея состоит в том, чтобы дифференцировать персонажи и цифры и использовать их в качестве основы сравнения для процедуры сортировки.
Куда пойти отсюда?
То list.sort () Метод сортирует элементы списка на месте восходящей способности. Чтобы настроить поведение сортировки по умолчанию, используйте дополнительный ключ Аргумент, передавая функцию, которая возвращает сопоставимое значение для каждого элемента в списке. С дополнительным логическим задний ход аргумент, вы можете переключиться с возрастания ( Reverse = false. ) до по порядку убывания ( Reverse = True ).
Если вы продолжаете бороться с теми основными командами Python, и вы чувствуете застрявшие в своем прогрессе обучения, у меня есть что-то для вас: Python One-listers (Amazon Link).
В книге я дам вам тщательный обзор темы критических компьютерных наук, таких как машинное обучение, регулярное выражение, наука о данных, Numpy и Python Basics – все в одной линейке кода Python!
Получите книгу от Amazon!
Официальная книга Описание: Python One-Listers покажет читателям, как выполнить полезные задачи с одной строкой кода Python. Следуя краткому переподготовку Python, книга охватывает важные продвинутые темы, такие как нарезка, понимание списка, вещание, функции лямбда, алгоритмы, регулярные выражения, нейронные сети, логистические регрессии и др .. Каждая из 50 секций книг вводит проблему для решения, проходит читателя через навыки, необходимые для решения этой проблемы, затем предоставляет краткое однонаправленное решение Python с подробным объяснением.
Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.
Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.
Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.
Оригинал: “https://blog.finxter.com/how-to-sort-a-list-alphabetically-in-python/”