Как да сортираме списък от низове?
Кой е най-добрият начин за създаване на азбучно сортиран списък в Python?
395
3
Кой е най-добрият начин за създаване на азбучно сортиран списък в Python?
Основен отговор:
Това променя първоначалния ви списък (т.е. сортира на място). За да получите сортирано копие на списъка, без да променяте оригинала, използвайте функцията
sorted()
:Въпреки това горните примери са малко наивни, защото не вземат предвид локалите и извършват сортиране, чувствително към малки и големи букви. Можете да се възползвате от незадължителния параметър
key
, за да зададете потребителски ред на сортиране (алтернативата, използващаcmp
, е остаряло решение, тъй като трябва да се оценява многократно -key
се изчислява само веднъж за всеки елемент).И така, да се сортира според текущата локалност, като се вземат предвид специфичните за езика правила (
cmp_to_key
е помощна функция от functools):И накрая, ако е необходимо, можете да посочите custom locale за сортиране:
Последна забележка: ще видите примери за сортиране без отчитане на големи и малки букви, които използват метода
lower()
- те са неправилни, защото работят само за подмножеството ASCII символи. Тези два метода са неправилни за всякакви данни, които не са на английски език:Наистина е толкова просто :)
Не,
list.sort()
е обща функция за сортиране. Ако искате да сортирате в съответствие с правилата на Unicode, ще трябва да дефинирате потребителска функция за сортиране на ключове. Можете да опитате да използвате модула pyuca, но не знам доколко е завършен.