Cómo Ordenar un Diccionario en Python
La forma más rápida de ordenar un diccionario en Python es
sorted()con unalambda:
ordenado = dict(sorted(precios.items(), key=lambda item: item[1]))
¿Cuándo necesitas esto?
Los diccionarios en Python no tienen un orden inherente, pero desde la versión 3.7 mantienen el orden de inserción. Necesitas ordenar un diccionario en Python cada vez que quieras mostrar un ranking, clasificar resultados o procesar datos en un orden específico. En esta guía aprenderás cómo hacerlo por claves y por valores.
Método 1: Ordenar un diccionario por claves
Para ordenar un diccionario en Python por claves, usa sorted() y reconstruye el diccionario con una comprensión.
precios = {"pera": 3, "manzana": 1, "naranja": 2}
ordenado = {k: precios[k] for k in sorted(precios)}
print(ordenado)
# {'manzana': 1, 'naranja': 2, 'pera': 3}
Método 2: Ordenar por valores con sorted() y lambda
Para ordenar por valores, usa key=lambda item: item[1].
precios = {"pera": 3, "manzana": 1, "naranja": 2}
ordenado = dict(sorted(precios.items(), key=lambda item: item[1]))
print(ordenado)
# {'manzana': 1, 'naranja': 2, 'pera': 3}
El método items() devuelve pares de clave y valor. La lambda le indica a sorted() qué parte del par usar como clave de ordenamiento.
Método 3: Usar itemgetter en lugar de lambda
La función operator.itemgetter es más rápida y más legible cuando necesitas ordenar por una posición específica.
from operator import itemgetter
precios = {"pera": 3, "manzana": 1, "naranja": 2}
ordenado = dict(sorted(precios.items(), key=itemgetter(1)))
print(ordenado)
Método 4: Orden inverso y listas de diccionarios
Agrega el argumento reverse=True para ordenar de mayor a menor.
precios = {"pera": 3, "manzana": 1, "naranja": 2}
ordenado = dict(sorted(precios.items(), key=lambda item: item[1], reverse=True))
print(ordenado)
# {'pera': 3, 'naranja': 2, 'manzana': 1}
Un caso muy común es ordenar una lista de diccionarios por una de sus claves.
usuarios = [
{"nombre": "Ana", "edad": 25},
{"nombre": "Luis", "edad": 19},
{"nombre": "Carla", "edad": 30},
]
ordenado = sorted(usuarios, key=lambda u: u["edad"])
print(ordenado)
Comparativa de métodos
| Método | Ventaja | Cuándo usarlo |
|---|---|---|
sorted() por claves |
Simple para orden de claves | Cuando las claves son el orden natural |
sorted() + lambda |
Ordena por valor | Recomendado para valores |
itemgetter |
Más rápido y limpio | Ordenar por posiciones fijas |
reverse=True |
De mayor a menor | Rankings y top lists |
Errores comunes y solución
Ordenar el diccionario original por accidente
sorted() nunca modifica el diccionario original. Si tu código lo cambia, probablemente estás asignando el resultado de forma incorrecta. Siempre construye un diccionario nuevo con dict() o una comprensión.
Olvidar el argumento key
Sin key, sorted() compara el par completo. Usa key=itemgetter(1) o key=lambda item: item[1] para ordenar por valor.
Preguntas frecuentes
¿sorted() modifica el diccionario original?
No. sorted() devuelve un objeto ordenado nuevo. El diccionario original no se modifica.
¿Puedo ordenar por valores sin lambda?
Sí. Puedes usar operator.itemgetter(1) como se muestra en el Método 3.
¿Por qué necesito dict() alrededor de sorted()?
Porque sorted() devuelve una lista de pares. El constructor dict() convierte esa lista de nuevo en un diccionario.
Contenido relacionado
- Cómo Eliminar Duplicados de una Lista en Python
- Cómo Convertir String a Int en Python
- Tutoriales How-To en Python
- Curso de Python desde Cero
Palabras clave relacionadas
cómo ordenar un diccionario en python, ordenar diccionario python, ordenar diccionario por valor python, sorted lambda python, itemgetter python, ordenar lista de diccionarios python, diccionario python
Guarda este tutorial y compártelo si te fue útil. Encuentra más guías prácticas en la sección how-to de Python.