En este tutorial, aprenderá a ordenar un diccionario de Python por su clave o valor.
Cuando trabaja con un diccionario en Python, hay momentos en los que necesitará ordenar su contenido, por clave o por valor. Como un diccionario de Python es una asignación de clave-valor, creará un nuevo diccionario que tenga las claves o los valores ordenados según sea necesario.
En este tutorial, comenzaremos revisando los conceptos básicos del diccionario de Python. Luego, aprenderemos a crear un nuevo diccionario en el que los contenidos se ordenen por clave o por valor, según sea necesario.
Python Dictionary Basics, Revisited
¿Qué es un diccionario Python?
El diccionario es una estructura de datos integrada en Python. Almacena elementos como pares clave-valor. Puede usar las teclas para buscar los valores correspondientes. Como las claves identifican de forma única los valores, no debe haber repetición de claves.
py_dict = {"Python":"cool!","Learn":True}
py_dict["Python"]
# Output: cool!
py_dict["Learn"]
# Output: True
Funcionalmente, un diccionario es similar a un mapa hash. Por lo tanto, no es necesariamente una estructura de datos ordenada. Puede acceder al contenido de un diccionario en cualquier orden arbitrario, siempre que conozca las claves.
Ordenación de elementos en un diccionario
En versiones anteriores de Python, tenía que usar un Pedido ordenado para preservar el orden de las llaves. Sin embargo, desde Python 3.7, puede acceder a los elementos en el mismo orden en que los agrega al diccionario.
Ahora que ha aprendido los conceptos básicos de los diccionarios de Python, aprendamos cómo crear copias ordenadas del diccionario.
⚙️ Nota:: debe tener Python 3.7 o posterior para que el código de este tutorial funcione como se esperaba. Puedes descargar el última versión de Python, o ejecutar los ejemplos en Editor de Python en línea de Geekflare.
How to Sort a Python Dictionary by Key
Fíjate en la siguiente imagen de la carta de postres de una cafetería. Hay dos columnas correspondientes a los elementos del menú y sus respectivos precios.

Puede representar esto en forma de un diccionario de Python recopilando los nombres de los artículos como claves y sus precios como valores.
Sigamos adelante y creemos el diccionario. desserts
, Como se muestra abajo.
desserts = {
"Ice cream":10,
"Brownies":12,
"Cheesecake":3,
"Swiss roll":5,
"Cookies":4,
"Cup cake":2
}
A continuación, creemos un diccionario. sorted_desserts
, donde los postres están ordenados alfabéticamente. En el original desserts
diccionario, los nombres de los postres son las claves. Por lo tanto, debe ordenar estas claves en orden alfabético para crear un nuevo diccionario.
Cómo acceder a las claves de un diccionario de Python
Para ello, primero obtendremos las claves del diccionario y luego las ordenaremos alfabéticamente.
En Python, puede usar el método de diccionario incorporado
.keys()
para obtener una lista de todas las claves del diccionario.
Llamemos al .keys()
método en el dessert
diccionario para recuperar las claves, como se muestra a continuación.
keys = desserts.keys()
print(keys)
#Output
['Ice cream', 'Brownies', 'Cheesecake', 'Swiss roll', 'Cookies',
'Cup cake']
Llamar al integrado de Python
sorted()
La función con una lista como argumento devuelve una nueva lista ordenada.
A continuación, llamemos al sorted()
función con la lista keys
como argumento y almacenar la lista ordenada en la variable sorted_keys
.
sorted_keys = sorted(keys)
print(sorted_keys)
# Output
['Brownies', 'Cheesecake', 'Cookies', 'Cup cake', 'Ice cream', 'Swiss roll']
Ahora que tenemos las claves ordenadas alfabéticamente, podemos buscar los valores correspondientes a las claves en sorted_keys
del desplegable desserts
diccionario, como se muestra a continuación.
sorted_desserts = {}
for key in sorted_keys:
sorted_desserts[key] = desserts[key]
print(sorted_desserts)
# Output
{'Brownies': 12, 'Cheesecake': 3, 'Cookies': 4, 'Cup cake': 2,
'Ice cream': 10, 'Swiss roll': 5}
Ampliemos el bloque de código anterior:
- Inicializar
sorted_desserts
ser un diccionario de Python vacío. - Recorrer la lista de claves
sorted_keys
. - Para cada tecla en
sorted_keys
, agregue una entrada asorted_desserts
buscando el valor correspondiente en eldesserts
diccionario.
Usando el for
bucle como este se considera detallado. En Python, existe una alternativa más concisa que utiliza la comprensión del diccionario.
Comprensión de diccionarios en Python
Python admite el uso de la comprensión del diccionario, similar a lista de comprensión. La comprensión del diccionario le permite crear un nuevo diccionario de Python con solo una línea de código.
▶️ Aquí está la construcción general para usar la comprensión de diccionario en Python.
# 1. when you have both keys and values in two lists: list1, list2
new_dict = {key:value for key,value in zip(list1,list2)}
# 2. when you have the keys, and can look up the values
new_dict = {key:value for key in <iterable>}
Usemos la segunda construcción en la celda de arriba: new_dict = {key:value for key in <iterable>}
para crear un sorted_desserts
diccionario.
En este ejemplo:
- iterable: la lista
sorted_keys
- clave: la clave a la que accedemos recorriendo sorted_keys
- propuesta de: busca el valor correspondiente a la clave en el diccionario de postres,
desserts[key]
Poniéndolo todo junto, tenemos la expresión para la comprensión del diccionario, como se muestra a continuación.
sorted_desserts = {key:desserts[key] for key in sorted_keys}
print(sorted_desserts)
{'Brownies': 12, 'Cheesecake': 3, 'Cookies': 4, 'Cup cake': 2,
'Ice cream': 10, 'Swiss roll': 5}
De la salida anterior, los postres están dispuestos en orden alfabético en el sorted_desserts
diccionario.
How to Sort a Python Dictionary by Value
A continuación, aprenderemos a ordenar un diccionario de Python por sus valores.
En primera desserts
diccionario, los valores corresponden a los precios de los postres. Es posible que desee ordenar el diccionario por precios, ya sea en orden creciente o decreciente.
▶️ Puede usar el método de diccionario incorporado .items()
para obtener todos los pares clave-valor. Cada tupla es un par clave-valor.
desserts.items()
dict_items([('Ice cream', 10), ('Brownies', 12), ('Cheesecake', 3),
('Swiss roll', 5), ('Cookies', 4), ('Cup cake', 2)])
Cada uno de los elementos es una tupla en sí mismo. Por lo tanto, también puede indexar cada par clave-valor para acceder a las claves y valores individualmente.
dict_items = desserts.items()
for item in dict_items:
print(f"key:{item[0]},value:{item[1]}")
# Output
key:Ice cream,value:10
key:Brownies,value:12
key:Cheesecake,value:3
key:Swiss roll,value:5
key:Cookies,value:4
key:Cup cake,value:2
Como nos gustaría ordenar por valores, usaremos el método anterior para obtener el valor en el índice 1 en el par clave-valor.
Cómo ordenar los valores de un diccionario de Python en orden creciente
Esta vez, usaremos el sorted()
junto con la función opcional key
parámetro. key
puede ser cualquier función de Python, una función integrada, una función definida por el usuario o incluso una función lambda.
Nota::
lambda args: expression
es la sintaxis para definir funciones lambda en Python.
En este ejemplo de clasificación de postres por precio, tenemos acceso a elementos del diccionario (pares clave-valor). Bien puesto key = lambda item:item[1]
como nos gustaría ordenar por el valor (precio).
As sorted()
función devuelve una lista de forma predeterminada, debe convertirlo explícitamente en un dict
, Como se muestra abajo.
sorted_desserts = dict(sorted(desserts.items(), key=lambda item:item[1]))
print(sorted_desserts)
{'Cup cake': 2, 'Cheesecake': 3, 'Cookies': 4, 'Swiss roll': 5,
'Ice cream': 10, 'Brownies': 12}
También puede reescribir usando comprensión del diccionario, como se discutió anteriormente.
sorted_desserts = {key:value for key, value in sorted(desserts.items(),
key=lambda item:item[1])}
print(sorted_desserts)
# Output
{'Cup cake': 2, 'Cheesecake': 3, 'Cookies': 4, 'Swiss roll': 5,
'Ice cream': 10, 'Brownies': 12}
In sorted_desserts
, Cup Cake
con un precio de $2 es el primer artículo y Brownies
con un precio de $ 12 es el último artículo.
Cómo ordenar los valores de un diccionario de Python en orden decreciente
Si desea ordenar los precios en orden decreciente, puede establecer el parámetro inverso opcional en True
como se explica a continuación.
sorted_desserts = dict(sorted(desserts.items(), key=lambda item:item[1],
reverse=True))
print(sorted_desserts)
# Output
{'Brownies': 12, 'Ice cream': 10, 'Swiss roll': 5, 'Cookies': 4,
'Cheesecake': 3, 'Cup cake': 2}
Ahora, sorted_desserts
ha sido ordenado en orden decreciente de precios, comenzando con el postre más caro Brownies
costando $12.
Terminando 👩🏽💻
Resumamos rápidamente todo lo que hemos aprendido en este tutorial.
- Un diccionario de Python almacena datos en pares clave-valor; todas las claves deben ser únicas.
- En el proceso de ordenar un diccionario por clave o valor, creamos un nuevo diccionario que se ordena según sea necesario.
- Puede utilizar los métodos de diccionario integrados, .teclas() y .artículos() para recuperar todas las claves y pares clave-valor, respectivamente.
- Puede utilizar el ordenado () función junto con los parámetros opcionales clave y marcha atrás para lograr la clasificación deseada.
Ahora que ha aprendido a ordenar un diccionario de Python, aprenda a ordenar listas de Python. ¡Feliz codificación!🎉