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

    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.

    .

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *