Clasificación de listas de Python con sorted () y sort ()

C

En este artículo, examinaremos varias formas de ordenar listas en Python.

Python incluye dos métodos integrados para ordenar listas y otros objetos iterables. El método elegido para un caso de uso particular a menudo depende de si queremos ordenar una lista en el lugar o devolver una nueva versión de la lista ordenada.

Suponiendo que queremos ordenar una lista en su lugar, podemos usar el list.sort() método de la siguiente manera:

>>> pets = ['Turtle', 'Cat', 'Fish', 'Dingo']
>>> pets.sort()
>>> pets
['Cat', 'Dingo', 'Fish', 'Turtle']

De forma predeterminada, la lista está ordenada en orden ascendente. Observe cómo cambia la lista de mascotas original después de llamar al método de clasificación. Si no queremos que esto suceda, podemos usar el integrado sorted() función para devolver una nueva lista ordenada sin modificar la lista original:

>>> pets = ['Turtle', 'Cat', 'Fish', 'Dingo']
>>> new_pets = sorted(pets)
>>> new_pets
['Cat', 'Dingo', 'Fish', 'Turtle']
>>> pets
['Turtle', 'Cat', 'Fish', 'Dingo']

El argumento inverso se puede utilizar para ordenar listas en orden descendente:

>>> pets = ['Turtle', 'Cat', 'Fish', 'Dingo']
>>> new_pets = sorted(pets, reverse=True)
>>> new_pets
['Turtle', 'Fish', 'Dingo', 'Cat']
>>> pets.sort(reverse=True)
>>> pets
['Turtle', 'Fish', 'Dingo', 'Cat']

Sin embargo, existen escenarios en los que es posible que deseemos ordenar una lista según los criterios personalizados que definimos. Por ejemplo, es posible que deseemos ordenar nuestra lista de mascotas por la longitud de cada entrada. En ese caso, Python ofrece el argumento clave, que acepta una función definida por el usuario para especificar los criterios de clasificación:

>>> pets = ['Turtle', 'Cat', 'Fish', 'Dingo']
>>> get_len(x):
...    return len(x)
...
>>> new_pets = sorted(pets, key=get_len)
>>> new_pets
['Cat', 'Fish', 'Dingo', 'Turtle']
>>> pets.sort(key=get_len)
>>> pets
['Cat', 'Fish', 'Dingo', 'Turtle']

Ahora consideremos un ejemplo un poco más complejo. Aquí tenemos una lista de diccionarios que contienen datos sobre un grupo de personas, y queremos ordenar la lista según las edades de las personas, en orden descendente. Para hacer esto usaremos tanto el key y reverse argumentos de palabras clave, así como una función lambda de Python. De esa forma podemos crear la función de clasificación sobre la marcha, en lugar de definirla de antemano:

>>> data = [ { 'name': 'Billy', 'age': 26, 'country': 'USA' }, { 'name': 'Timmy', 'age': 5, 'country': 'Australia' }, { 'name': 'Sally', 'age': 19, 'country': 'Costa Rica' }, { 'name': 'Tommy', 'age': 67, 'country': 'Serbia' } ]
>>> new_data = sorted(data, key=lambda x: x['age'], reverse=True)
>>> new_data
[{'country': 'Serbia', 'age': 67, 'name': 'Tommy'}, {'country': 'USA', 'age': 26, 'name': 'Billy'}, {'country': 'Costa Rica', 'age': 19, 'name': 'Sally'}, {'country': 'Australia', 'age': 5, 'name': 'Timmy'}]
>>> data.sort(key=lambda x: x['age'], reverse=True)
>>> data
[{'country': 'Serbia', 'age': 67, 'name': 'Tommy'}, {'country': 'USA', 'age': 26, 'name': 'Billy'}, {'country': 'Costa Rica', 'age': 19, 'name': 'Sally'}, {'country': 'Australia', 'age': 5, 'name': 'Timmy'}]

Observe cómo los diccionarios comenzaron en un orden aparentemente aleatorio y luego terminaron con las personas mayores primero y las personas más jóvenes al final de la lista.

El uso de las funciones de clasificación y lambdas de esta manera nos permite clasificar fácilmente estructuras de datos complejas, todo en una línea de código. Y el orden de clasificación se puede establecer en orden descendente configurando reverse=True.

Sobre el Autor

Este artículo fue escrito por Ramiro de la Vega, un consultor y desarrollador de software apasionado por ayudar a otros a mejorar sus vidas a través del código. Jacob es el creador de Tarjeta de código – una herramienta conveniente para que los desarrolladores busquen, copien y peguen fragmentos de código comunes.

.

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

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