Ordenar lista de diccionarios en Python

Manav Narula 21 junio 2023
  1. Utilice la función sorted() para ordenar una lista de diccionarios en Python
  2. Utilice la función sort() para ordenar una lista de diccionarios en Python
Ordenar lista de diccionarios en Python

Una lista es un objeto de colección lineal en Python que puede emular matrices almacenando cada elemento en un índice particular. Las listas también pueden almacenar otros objetos, como diccionarios que contienen pares clave-valor.

Este tutorial ilustra cómo ordenar una lista de diccionarios en Python.

Utilice la función sorted() para ordenar una lista de diccionarios en Python

Esta función toma una lista existente y devuelve una lista ordenada. Puede ordenar la lista en orden ascendente o descendente. También podemos especificar un parámetro clave que proporciona una función para decidir el orden de los elementos.

Podemos obtener una ventaja usando la función sorted() para ordenar la lista de diccionarios. Sin embargo, no es simple comparar instancias de diccionario usando el operador de comparación; necesitamos usar el parámetro clave.

Podemos ordenar una lista basada en el valor de la clave. Otra condición para ello es que esa clave sea común en todos los diccionarios de la lista.

Veamos ahora un ejemplo de esto.

lst = [{"n": 1}, {"n": 4}, {"n": 2}]
print(sorted(lst, key=lambda d: d["n"]))

Producción :

[{'n': 1}, {'n': 2}, {'n': 4}]

El ejemplo anterior tiene diccionarios con la misma clave, n, que ordenamos según el valor de esta clave. Asignamos una función lambda con el parámetro key de la función sorted().

Esta función de una línea le dice al parámetro que considere el valor asociado con esta clave para ordenarlos. También podemos usar la función operator.itemgetter() en lugar de la función lambda.

Podemos usar esta función para obtener el valor del diccionario y usarlo para comparar. Vea el código a continuación.

import operator

lst = [{"n": 1}, {"n": 4}, {"n": 2}]
print(sorted(lst, key=operator.itemgetter("n")))

Producción :

[{'n': 1}, {'n': 2}, {'n': 4}]

También podemos usar el parámetro reverse y establecerlo en True para ordenar la lista en orden descendente. Por ejemplo, vea la siguiente valla de código.

import operator

lst = [{"n": 1}, {"n": 4}, {"n": 2}]
print(sorted(lst, key=operator.itemgetter("n"), reverse=True))

Producción :

[{'n': 4}, {'n': 2}, {'n': 1}]

El ejemplo anterior muestra que la lista se ha ordenado en orden descendente.

Utilice la función sort() para ordenar una lista de diccionarios en Python

La función sort() funciona de manera similar al método sorted para ordenar listas. La principal diferencia es que la función sort() altera el orden de la lista original, y esta última crea una nueva lista.

Podemos usar el método sort() de la misma manera que usamos la función sorted, con las funciones operator.itemgetter() y lambda.

Usaremos el parámetro clave como lo hicimos en los ejemplos anteriores. También podemos usar el parámetro reverse para ordenar la lista en orden descendente.

Vea el código a continuación.

import operator

lst1 = [{"n": 1}, {"n": 4}, {"n": 2}]
lst2 = [{"n": 5}, {"n": 1}, {"n": 3}]
lst1.sort(key=lambda d: d["n"])
lst2.sort(key=operator.itemgetter("n"), reverse=True)
print(lst1, lst2)

Producción :

[{'n': 1}, {'n': 2}, {'n': 4}] [{'n': 5}, {'n': 3}, {'n': 1}]

El ejemplo anterior muestra que las listas originales han sido modificadas y ordenadas de acuerdo con la clave requerida.

La primera lista utiliza la función lambda. El segundo utiliza el método operator.itemgetter y ordena la lista en orden descendente con el parámetro reverse.

Entonces, tenemos dos formas de ordenar una lista de diccionarios en Python. Primero, utilizó las funciones ordenadas y clasificar. Para ordenar una lista de diccionarios, usamos el valor de una clave común en todos los diccionarios.

Creamos una función que devuelve este valor y lo especificamos con el parámetro clave en ambas funciones. Discutimos los métodos lambda y operator.itemgetter para esto.

Para obtener el resultado en orden descendente, podemos usar el parámetro reverse y establecerlo en True. ¡Bravo! Ha aprendido con éxito cómo ordenar una lista de diccionarios en Python.

Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Artículo relacionado - Python List