Cómo ordenar un diccionario por valor en Python
Aprenda a ordenar un diccionario de Python por sus valores. Descubra la clasificación mediante sorted(), claves lambdas personalizadas y la creación de estructuras de dictado ordenadas.
Descripción general
Si bien los diccionarios están diseñados principalmente para operaciones de búsqueda rápida utilizando claves únicas, a menudo necesitarás ordenar los elementos del diccionario según sus valores. Por ejemplo, ordenar a los estudiantes por sus notas de examen, enumerar los productos del más barato al más caro u ordenar el recuento de palabras por frecuencia.
En Python, no se puede ordenar directamente un diccionario in situ porque las estructuras de diccionario estándar no admiten métodos de ordenación como listas. En cambio, el enfoque estándar es recuperar los elementos del diccionario como tuplas usando el método `.items()`, ordenar esas tuplas usando la función incorporada `sorted()` con una clave de clasificación personalizada y luego reconstruir el diccionario a partir de los elementos ordenados.
La clave de clasificación suele ser una función lambda que devuelve el segundo elemento de la tupla (el valor del diccionario): `clave=elemento lambda: elemento[1]`. DesdePython 3.7+, los diccionarios estándar conservan el orden de inserción. Volver a convertir la lista ordenada de tuplas en un diccionario usando el constructor `dict()` devuelve un diccionario limpio y ordenado listo para la iteración.
Código y salida de ejecución
Este script demuestra cómo ordenar un diccionario de puntuaciones de pruebas por valores en orden ascendente y descendente utilizando funciones lambda.
scores = {"Alice": 88, "Bob": 75, "Charlie": 95, "David": 82}
print("Original dictionary:", scores)
# 1. Sort by values (ascending order)
sorted_ascending = dict(sorted(scores.items(), key=lambda item: item[1]))
print("Sorted ascending:", sorted_ascending)
# 2. Sort by values (descending order)
sorted_descending = dict(sorted(scores.items(), key=lambda item: item[1], reverse=True))
print("Sorted descending:", sorted_descending)
# 3. sorting by keys for comparison
sorted_keys = dict(sorted(scores.items(), key=lambda item: item[0]))
print("Sorted by keys:", sorted_keys)Original dictionary: {'Alice': 88, 'Bob': 75, 'Charlie': 95, 'David': 82}
Sorted ascending: {'Bob': 75, 'David': 82, 'Alice': 88, 'Charlie': 95}
Sorted descending: {'Charlie': 95, 'Alice': 88, 'David': 82, 'Bob': 75}
Sorted by keys: {'Alice': 88, 'Bob': 75, 'Charlie': 95, 'David': 82}Implementación paso a paso
- Llame a my_dict.items() para recuperar pares clave-valor como una lista de tuplas.
- Pase los elementos del diccionario a la función sorted().
- Especifique key=lambda item: item[1] para indicar a la función sorted() que ordene según el valor (segundo elemento de cada tupla).
- Pase reverse=True como argumento opcional para ordenar los elementos en orden descendente.
- Reconstruya el diccionario ordenado pasando la lista ordenada de tuplas al constructor dict().
Preguntas frecuentes
¿Qué significa clave = elemento lambda: elemento [1]?
La función sorted() pasa cada elemento de la secuencia de elementos (una tupla de (clave, valor)) a la función lambda. item[1] extrae el componente de valor y le dice a Python que ordene las tuplas por valor.
¿La clasificación de un diccionario afecta su velocidad de búsqueda de claves?
No, las búsquedas de claves siguen teniendo una complejidad de tiempo promedio O(1) porque la clasificación solo cambia la secuencia de iteración, no la estructura de la tabla hash subyacente.
Temas relacionados
Aprenda a ordenar una lista en Python usando el método sort() y la función sorted(). Descubra ejemplos de ordenación inversa y clasificación de claves personalizadas.
Cómo iterar a través de un diccionario en PythonAprenda a realizar un bucle o iterar en un diccionario de Python. Descubra métodos para recorrer claves, valores y pares clave-valor con ejemplos limpios y ejecutables.
Recursos recomendados de Python
Amplíe sus conocimientos con tutoriales interactivos relacionados, hojas de trucos y comparaciones de códigos.
Bucles de Python
Aprenda a utilizar bucles de Python para iterar sobre datos. Domine los bucles for, while, rompa, continúe y realice bucles con ejemplos interactivos.
Hoja de referencia de métodos del diccionario Python
Aprenda los métodos del diccionario de Python. Guía de referencia completa para inserciones, recuperaciones, actualizaciones y comprobaciones de pares clave-valor.
Python vs Ruby: secuencias de comandos, marcos web y filosofía
Compara Python y Ruby. Conozca las diferencias sutiles en sus filosofías, elegancia de sintaxis, marcos web (Djangovs Rails) y estilos de ejecución.