In Lenguaje de programación Última actualizaciónated:
Comparte en:
Software de Jira es la herramienta de gestión de proyectos número uno utilizada por equipos ágiles para planificar, rastrear, lanzar y respaldar software excelente.

En este tutorial, aprenderá a ordenar un diccionario de Python por su clave o valor.

Cuando trabajas con un diccionario en Python, hay ocasiones en las que necesitarás ordenar su contenido, por clave o por valor. Como un diccionario de Python es un mapeo clave-valor, crearáate un nuevo diccionario que tiene las claves o valores ordenados según sea necesario.

En este tutorial, comenzaremos por revistando los conceptos básicos del diccionario Python. Luego aprenderemos a crear.ate un nuevo diccionario en el que los contenidos se ordenan por clave o por valor, según sea necesario.

Conceptos básicos del diccionario Python, Revisitado

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

Funciónally, un diccionario es similar a un mapa hash. Por tanto, no es necesariamente una estructura de datos ordenada. Puede acceder al contenido de un diccionario en cualquier idioma.bitorden aleatorio, 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 a crearate Copias ordenadas del diccionario.

⚙️ Nota: Necesitas tener Python 3.7 o later para que el código de este tutorial funcione como se esperaba. Puedes descargar el lateprimera versión de Python.

Cómo ordenar un diccionario de Python por clave

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 create 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, creemosate 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, debes ordenar estas claves en orden alfabético para crearlas.ate 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 te permite crearate un nuevo diccionario 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>} a create a 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.

Cómo ordenar un diccionario de Python por valor

A continuación, aprenderemos a ordenar un diccionario de Python por sus valores.

En la 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.self. Por lo tanto, también puede indexar cada par clave-valor para acceder a las claves y valores individuales.ally.

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 can be any Python function, a built-in function, a user-defined function, or even a lambda function.

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}

You can also rewrite using dictionary comprehension, as discussed earlier.

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 configurar la opción opcional revcambiar el parámetro a 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.

Resumen

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 la process de ordenar un diccionario por clave o valor, creamosate 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 revgaélico para lograr la clasificación deseada.
Comparte en:
  • Bala Priya C.
    Autor
    Bala Priya es desarrolladora y técnica. writer de la India con más de tres años de experiencia en el ámbito de la redacción de contenidos técnicos. Comparte su aprendizaje con la comunidad de desarrolladores mediante la creación de tutoriales tecnológicos, guías prácticas y más….

Gracias a nuestros patrocinadores

Impulse su negocio

Algunas de las herramientas y servicios para ayudar a su negocio grow.
  • La herramienta de conversión de texto a voz que utiliza IA para generarate Voces realistas parecidas a las humanas.

    Intente Murf AI
  • 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
  • Monday.com es un sistema operativo de trabajo todo en uno para ayudarlo a administrar proyectos, tareas, trabajo, ventas, CRM, operaciones, workflows, y más.

    Intente Monday
  • 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