¿Cuál es la mejor manera de crear una lista alfabéticamente ordenada en Python?¿Cómo ordenar una lista de cadenas?
Respuesta
respuesta básica simple:
mylist = ["b", "C", "A"]
mylist.sort()
Esto modifica su lista original (es decir, las clases en el lugar). Para obtener una copia ordenada de la lista, sin modificar el original, utilice la función sorted()
:
for x in sorted(mylist):
print x
Sin embargo, los ejemplos anteriores son un poco ingenua, porque no toman en cuenta la configuración regional, y realizan un caso clasificación sensible. Puede aprovechar el parámetro opcional key
para especificar el orden de clasificación personalizado (la alternativa, utilizando cmp
, es una solución en desuso, ya que debe evaluarse varias veces; key
solo se calcula una vez por elemento).
Por lo tanto, para ordenar de acuerdo a la localización actual, teniendo reglas específicas del idioma en cuenta (cmp_to_key
es una función de ayuda de functools):
sorted(mylist, key=cmp_to_key(locale.strcoll))
Y, por último, si es necesario, se puede especificar un custom locale para la clasificación:
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']
Última nota: se verá ejemplos de clasificación entre mayúsculas y minúsculas que utilizan el método lower()
- esas son incorrectos, ya que trabajan sólo para el subconjunto de caracteres ASCII. Esos dos son mal que los datos no-Inglés:
# 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)' es más rápido. – jfs
Buen punto. Dejaré mi ejemplo actual tal como está, ya que probablemente sea más fácil para un principiante ver lo que está sucediendo, pero lo tendré en cuenta en el futuro. –
Si alguien está curioso, el rendimiento de list.sort() se puede encontrar [aquí] (http://stackoverflow.com/questions/1517347/about-pythons-built-in-sort-method) –
list.sort()
Realmente es así :)
No funciona en Python 3.6 con números. Use 'sorted (list)' en su lugar. – Dmitry
Pero, ¿cómo este lenguaje específico mango reglas de clasificación? ¿Tiene en cuenta la configuración regional?
No, list.sort()
es una función de clasificación genérica. Si desea ordenar de acuerdo con las reglas de Unicode, tendrá que definir una función de clave de clasificación personalizada. Puede intentar usar el módulo pyuca, pero no sé qué tan completo es.
También es de destacar la función sorted()
:
for x in sorted(list):
print x
Esto devuelve una nueva versión, ordenados en una lista sin cambiar la lista original.
La forma correcta de ordenar cadenas es:
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']
El ejemplo anterior de mylist.sort(key=lambda x: x.lower())
no tendrán ningún problema para los contextos solamente ASCII.
Supongamos s = "ZWzaAd"
Para ordenar por encima de cadena sencilla la solución será inferior a uno.
print ''.join(sorted(s))
Utilice función sorted() en python3
items = ["love", "like", "play", "cool", "my"]
sorted(items2)
- 1. ¿Cómo puedo ordenar una matriz de cadenas?
- 2. Cómo ordenar cadenas enteras?
- 3. ¿Cómo ordenar una lista numéricamente?
- 4. ¿Cómo ordenar una lista según otra lista?
- 5. Ordenar en una lista
- 6. Ordenar lista de cadenas de sufijo entero en Python
- 7. ¿Cómo puedo ordenar cadenas alfanuméricas en Unix?
- 8. Ordenar cadenas en Prolog
- 9. ¿Cómo ordenar cadenas no inglesas usando nspredicate?
- 10. Cómo ordenar una lista en C#
- 11. Cómo ordenar una lista por el campo
- 12. Cómo ordenar una lista con objetos dinámicos
- 13. Cómo pasar una lista de cadenas
- 14. cómo analizar rápidamente una lista de cadenas
- 15. Cómo ordenar 100 GB de cadenas
- 16. cómo ordenar una matriz de cadenas por orden alfabético?
- 17. Ordenar una lista por otra
- 18. Algoritmo para ordenar una lista de objetos
- 19. ¿Cómo ordenar una lista de colores en una dimensión?
- 20. ordenar una lista de tuplas en Python
- 21. ordenar una lista genérica de dobles
- 22. cómo ordenar cadenas en javascript numéricamente
- 23. Método para ordenar una lista de listas?
- 24. Python ¿cómo ordenar esta lista?
- 25. Ordenar una lista de cadenas numéricamente (1,2, ..., en lugar de 9,10 1,10,2)
- 26. Python - ordenar una lista de listas anidadas
- 27. ¿Cómo ordenar una búsqueda?
- 28. ¿Cómo ordenar una lista de arrays de objetos java?
- 29. Java: ordenar una lista no modificable
- 30. Erlang: aplanamiento de una lista de cadenas
Use 'locale' y de los métodos de ordenación de cadenas para ordenar de forma natural de acuerdo con la localización actual. – u0b34a0f6ae