Estoy un poco confundido con respecto a la estructura de datos en python; ()
, []
Y {}
. Estoy tratando de ordenar una lista simple, probablemente porque no puedo identificar el tipo de datos que no puedo ordenar.
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.
python
list
sorting
alphabetical
icypy
fuente
fuente
[]
incluye el tipo de datos incorporadolist
(consulte tutorialspoint.com/python/python_lists.htm ). Las listas son solo grupos de valores (pueden contener otros objetos iterables, es decir, listas anidadas).()
encierra el incorporadotuple
. Son inmutables (no se pueden cambiar). (ver tutorialspoint.com/python/python_tuples.htm ). Y{}
encierra el incorporadodictionary
. Paralelos con un diccionario (para palabras), donde una "clave" sería la palabra y el "valor" es la definición (ver tutorialspoint.com/python/python_dictionary.htm ).Respuestas:
[]
denota una lista ,()
denota una tupla y{}
denota un diccionario . Debería 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í:
Como puede ver, las palabras que comienzan con una letra mayúscula tienen preferencia sobre aquellas que comienzan con una letra minúscula. Si desea ordenarlos de forma independiente, haga esto:
También puede ordenar la lista en orden inverso haciendo esto:
Tenga en cuenta: si trabaja con Python 3, entonces
str
es 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 tratar con cadenas Unicode que tienen el tipo de datosunicode
en Python 2, y nostr
. En tal caso, si tiene una lista de cadenas unicode, debe escribir enkey=unicode.lower
lugar dekey=str.lower
.fuente
find_one()
resultado de una base de datos MongoDB, me sale error:descriptor 'lower' requires a 'str' object but received a 'unicode'
. El resultado es una matriz de cadenas y aplicado de esta manera:results['keywords'] = sorted(keywords['keywords'], key=str.lower)
. ¿Alguien sabe cómo resolver esto?key=unicode.lower
lugar dekey=str.lower
. Esto se debe a que se trata de cadenas unicode, no de cadenas de bytes. Consulte el CÓMO oficial de Unicode para obtener más información sobre esto, especialmente para las diferencias respectivas entre Python 2 y 3.Python tiene una función incorporada llamada
sorted
, que le dará una lista ordenada de cualquier iterable que lo alimente (como una lista ([1,2,3]
); un dict ({1:2,3:4}
, aunque solo devolverá una lista ordenada de las teclas; un conjunto ({1,2,3,4
) ; o una tupla ((1,2,3,4)
)).Las listas también tienen un
sort
método que realizará la ordenación in situ (x.sort () devuelve None pero cambia el objeto x).Ambos también toman un
key
argumento, que debería ser invocable (función / lambda) que puede usar para cambiar por qué ordenar.Por ejemplo, para obtener una lista de
(key,value)
pares de un dict que se ordena por valor, puede usar el siguiente código:fuente
Estás lidiando con una lista de python, y ordenarla es tan fácil como hacerlo.
fuente
Puede usar la
sorted
función incorporada.fuente
ListName.sort()
lo ordenará alfabéticamente. Puede agregarreverse=False/True
entre paréntesis para invertir el orden de los elementos:ListName.sort(reverse=False)
fuente
fuente