Lista de clasificación de la estructura de datos de Python alfabéticamente

4 minutos de lectura

avatar de usuario
helado

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, no puedo ordenarlos.

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

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

  • Si desea ordenar su lista, puede usar “list=[‘Stem’, ‘constitute’, ‘Sedge’, ‘Eflux’, ‘Whim’, ‘Intrigue’] list.sort() lista de impresión” .

    – kannanrbk

    25 de diciembre de 2012 a las 17:11


  • [] encierra el tipo de datos incorporado list(ver tutorialspoint.com/python/python_lists.htm). Las listas son solo grupos de valores (pueden contener otros objetos iterables, es decir, listas anidadas). () encierra el incorporado tuple. Son inmutables (no se pueden cambiar). (ver tutorialspoint.com/python/python_tuples.htm). Y {} encierra el incorporado dictionary. 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).

    – Rushy Panchal

    25 de diciembre de 2012 a las 21:17

avatar de usuario
pemistahl

[] denota un lista, () denota un tupla y {} denota un diccionario. Deberías echar un vistazo a la 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 puede 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 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 datos unicode en Python 2, y no str. En tal caso, si tiene una lista de cadenas Unicode, debe escribir key=unicode.lower en vez de key=str.lower.

  • Usando el segundo ejemplo en un pymongo find_one() resultado de una base de datos MongoDB, aparece el error: descriptor 'lower' requires a 'str' object but received a 'unicode'. El resultado es una matriz de cadenas y se implementa así: results['keywords'] = sorted(keywords['keywords'], key=str.lower). ¿Alguien sabe cómo resolver esto?

    – usuario1063287

    17 de agosto de 2016 a las 10:46


  • @ user1063287 Perdón por mi respuesta tardía. En su caso, debe escribir key=unicode.lower en vez de key=str.lower. Esto se debe a que se trata de cadenas Unicode, no cadenas de bytes. Por favor refiérase al funcionario CÓMO Unicode para más información sobre esto, especialmente para las respectivas diferencias entre Python 2 y 3.

    – pemistahl

    17 de enero de 2017 a las 13:24

avatar de usuario
Teo Klestrup Roijezon

Python tiene una función incorporada llamada sortedque le dará una lista ordenada de cualquier iterable que la alimente (como una lista ([1,2,3]); un dictado ({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 sort método que realizará la ordenación en el lugar (x.sort() devuelve None pero cambia el objeto x).

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

Ambos también toman un key argumento, que debe 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 está ordenado por valor, puede usar 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)]

Estás lidiando 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()

Puede utilizar incorporado sorted función.

print sorted(['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'])

avatar de usuario
artesano0800

ListName.sort() lo ordenará alfabéticamente. Puedes añadir reverse=False/True entre paréntesis para invertir el orden de los elementos: ListName.sort(reverse=False)

  • ¿Es este un comentario para Ruby?

    – aljabear

    14/06/2016 a las 21:13

avatar de usuario
Abhijeet Rastogi

>>> a = ()
>>> type(a)
<type 'tuple'>
>>> a = []
>>> type(a)
<type 'list'>
>>> a = {}
>>> type(a)
<type 'dict'>
>>> a =  ['Stem', 'constitute', 'Sedge', 'Eflux', 'Whim', 'Intrigue'] 
>>> a.sort()
>>> a
['Eflux', 'Intrigue', 'Sedge', 'Stem', 'Whim', 'constitute']
>>> 

  • ¿Es este un comentario para Ruby?

    – aljabear

    14/06/2016 a las 21:13

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad