Mais
Como ordenar uma lista de cordas?
Qual é a melhor maneira de criar uma lista ordenada alfabeticamente em Python?
395
3
Qual é a melhor maneira de criar uma lista ordenada alfabeticamente em Python?
Resposta básica:
Isto modifica a sua lista original (ou seja, tipos no local). Para obter uma cópia ordenada da lista, sem alterar o original, utilize a função
sorted()
:Entretanto, os exemplos acima são um pouco ingênuos, porque eles não levam em conta o locale't levam em conta o locale, e realizam uma classificação sensível a casos. Você pode tirar vantagem do parâmetro opcional
key
para especificar a ordem de ordenação personalizada (a alternativa, utilizandocmp
, é uma solução depreciada, já que ela tem que ser avaliada várias vezes -key
só é computada uma vez por elemento).Então, para ordenar de acordo com o local atual, levando em conta as regras específicas do idioma (
cmp_to_key
é uma função de ajuda dos functools):E finalmente, se você precisar, você pode especificar um locale personalizado para a ordenação:
Última nota: você verá exemplos de ordenação não sensível a maiúsculas e minúsculas que utilizam o método
lower()
- esses são incorretos, porque funcionam apenas para o subconjunto de caracteres ASCII. Esses dois estão errados para qualquer dado não-inglês:É realmente assim tão simples :)
Não,
list.sort()
é uma função de ordenação genérica. Se você quiser ordenar de acordo com as regras Unicode, você'terá que definir uma função de chave de ordenação personalizada. Você pode tentar usar o módulo pyuca, mas eu não'não sei o quão completo ele é.