Каков наилучший способ создания отсортированного по алфавиту списка в Python?Как отсортировать список строк?
ответ
Basic Ответ:
mylist = ["b", "C", "A"]
mylist.sort()
Это изменяет исходный список (т.е. виды на месте). Чтобы получить отсортированный копию списка, не изменяя оригинал, используйте sorted()
функцию:
for x in sorted(mylist):
print x
Однако приведенные выше примеры являются немного наивно, потому что они не принимают во внимание локаль и выполнить дело -чувствительная сортировка. Вы можете воспользоваться необязательным параметром key
, чтобы указать пользовательский порядок сортировки (альтернатива, используя cmp
, является устаревшим решением, так как его нужно оценивать несколько раз - key
вычисляется только один раз для каждого элемента).
Таким образом, для сортировки в соответствии с текущей локалью, принимая правила конкретного языка во внимание (cmp_to_key
вспомогательная функция от functools):
sorted(mylist, key=cmp_to_key(locale.strcoll))
И, наконец, если вам нужно, вы можете указать custom locale для сортировки:
import locale
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') # vary depending on your lang/locale
assert sorted((u'Ab', u'ad', u'aa'),
key=cmp_to_key(locale.strcoll)) == [u'aa', u'Ab', u'ad']
Последнего примечания: вы будете видеть примеры сортировки без учета регистра, которые используют метод lower()
- те неверны, потому что они работают только для ASCII подмножества символов. Те два неправильны для любых неанглийских данных:
# this is incorrect!
mylist.sort(key=lambda x: x.lower())
# alternative notation, a bit faster, but still wrong
mylist.sort(key=str.lower)
`mylist.sort (key = str.lower)` быстрее. – jfs 2008-10-27 21:30:44
list.sort()
Это действительно так просто :)
Не работает на Python 3.6 с числами. Вместо этого используйте `sorted (list)`. – Dmitry 2017-10-28 21:01:40
Но как эта ручка конкретного языка правила сортировки? Учитывает ли он язык?
No, list.sort()
является общей функцией сортировки. Если вы хотите сортировать в соответствии с правилами Unicode, вам нужно будет определить функцию пользовательского сортировочного ключа. Вы можете попробовать использовать модуль pyuca, но я не знаю, насколько это полно.
Также стоит отметить sorted()
функцию:
for x in sorted(list):
print x
Это возвращает новую, отсортированный версию списка без изменения исходного списка.
Правильный способ сортировки строк является:
import locale
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') # vary depending on your lang/locale
assert sorted((u'Ab', u'ad', u'aa'), cmp=locale.strcoll) == [u'aa', u'Ab', u'ad']
# Without using locale.strcoll you get:
assert sorted((u'Ab', u'ad', u'aa')) == [u'Ab', u'aa', u'ad']
предыдущий пример mylist.sort(key=lambda x: x.lower())
будет работать нормально для ASCII-только контекстах.
Пусть s = "ZWzaAd"
Для сортировки выше строки простое решение будет меньше единицы.
print ''.join(sorted(s))
Пожалуйста, используйте функцию отсортированный() в Python3
items = ["love", "like", "play", "cool", "my"]
sorted(items2)
- 1. Как отсортировать Список строк в порядке возрастания
- 2. Как отсортировать список строк по наибольшему числу
- 3. Как отсортировать список строк следуя определенный шаблон
- 4. Как отсортировать список строк, содержащих числа численно
- 5. Как отсортировать список строк и список чисел, связанных, в python?
- 6. Как отсортировать массив строк?
- 7. Как отсортировать список char []?
- 8. Как отсортировать список
- 9. Как отсортировать список раз
- 10. Как отсортировать список объектов
- 11. как отсортировать этот список?
- 12. Как отсортировать список интерфейса
- 13. Как отсортировать список координат?
- 14. Android - Как отсортировать список
- 15. Как отсортировать общий список?
- 16. Как отсортировать список версий?
- 17. Как отсортировать список объектов
- 18. Как отсортировать список массивов?
- 19. Как отсортировать список ссылок?
- 20. Как отсортировать связанный список
- 21. Как отсортировать этот список?
- 22. Как отсортировать список словарей?
- 23. как отсортировать список зависимостей
- 24. Как отсортировать список текстовых + дата строк в Groovy
- 25. Как отсортировать список строк, преобразованных из nullable datetime
- 26. Как отсортировать список строк по количеству определенного символа?
- 27. Как отсортировать список строк, используя часть его числового содержимого?
- 28. Как отсортировать список строк, игнорирующих пробелы в python?
- 29. Как отсортировать список строк по n-граммам в python
- 30. В Haskell, как вы можете отсортировать список бесконечных списков строк?
Используйте `locale` и это строковых методов сортировки для сортировки естественно в зависимости от текущей локали. – u0b34a0f6ae 2009-09-08 18:21:41