Lista de clasificación de estructura de datos de Python alfabéticamente [duplicado]

Resuelto icypy asked hace 11 años • 6 respuestas

Estoy un poco confundido con respecto a la estructura de datos en Python; (), [], y {}. Estoy intentando ordenar una lista simple, probablemente porque no puedo identificar el tipo de datos, no puedo ordenarlos.

Mi lista es simple:['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']

Mi pregunta es ¿qué tipo de datos son y cómo ordenar las palabras alfabéticamente?

icypy avatar Dec 26 '12 00:12 icypy
Aceptado

[]denota una lista , ()denota una tupla y {}denota un diccionario . Deberías echar un vistazo al tutorial oficial de Python , ya que estos son los conceptos básicos de la programación en Python.

Lo que tienes es una lista de cadenas. Puedes ordenarlo así:

In [1]: lst = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']

In [2]: sorted(lst)
Out[2]: ['Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim', 'constitute']

Como puede ver, las palabras que comienzan con una letra mayúscula tienen preferencia sobre las que comienzan con una letra minúscula. Si desea ordenarlos de forma independiente, haga esto:

In [4]: sorted(lst, key=str.lower)
Out[4]: ['constitute', 'Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim']

También puedes ordenar la lista en orden inverso haciendo esto:

In [12]: sorted(lst, reverse=True)
Out[12]: ['constitute', 'Whim', 'Stem', 'Sedge', 'Intrigue', 'Eflux']

In [13]: sorted(lst, key=str.lower, reverse=True)
Out[13]: ['Whim', 'Stem', 'Sedge', 'Intrigue', 'Eflux', 'constitute']

Tenga en cuenta: si trabaja con Python 3, entonces stres el tipo de datos correcto para cada cadena que contiene texto legible por humanos. Sin embargo, si aún necesita trabajar con Python 2, entonces podría trabajar con cadenas Unicode que tengan el tipo de datos unicodeen Python 2, y no str. En tal caso, si tiene una lista de cadenas Unicode, debe escribir key=unicode.loweren lugar de key=str.lower.

pemistahl avatar Dec 25 '2012 17:12 pemistahl

Python tiene una función incorporada llamada sorted, que le dará una lista ordenada de cualquier iterable que le proporcione (como una lista ( [1,2,3]); un dict ( {1:2,3:4}), aunque solo devolverá una lista ordenada de las claves; un conjunto ( {1,2,3,4); o una tupla ( (1,2,3,4))).

>>> x = [3,2,1]
>>> sorted(x)
[1, 2, 3]
>>> x
[3, 2, 1]

Las listas también tienen un sortmétodo que realizará la clasificación en el lugar (x.sort() devuelve Ninguno pero cambia el objeto x).

>>> x = [3,2,1]
>>> x.sort()
>>> x
[1, 2, 3]

Ambos también toman un keyargumento, que debería ser una función invocable (función/lambda) que puedes usar para cambiar por qué ordenar.
Por ejemplo, para obtener una lista de (key,value)pares de un dictado ordenado por valor, puede utilizar el siguiente código:

>>> x = {3:2,2:1,1:5}
>>> sorted(x.items(), key=lambda kv: kv[1])  # Items returns a list of `(key,value)`-pairs
[(2, 1), (3, 2), (1, 5)]
Teo Klestrup Röijezon avatar Dec 25 '2012 17:12 Teo Klestrup Röijezon

Estás tratando con una lista de Python y ordenarla es tan fácil como hacer esto.

my_list = ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue']
my_list.sort()
Bryan avatar Dec 25 '2012 17:12 Bryan