Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

Cómo ordenar un diccionario de Python por clave o valor

diccionario de python
Escáner de seguridad de aplicaciones web Invicti – la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

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.

python-dictionary-from-data

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 a sorted_desserts buscando el valor correspondiente en el desserts 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 Truecomo 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!🎉

Gracias a nuestros patrocinadores
Más lecturas interesantes sobre el desarrollo
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Intente Intruder