- 1 1. Introducción
- 2 2. Métodos de ordenación de diccionarios
- 3 3. Reconstrucción de resultados ordenados
- 4 4. Ejemplos
- 5 5. Precauciones y mejores prácticas
- 6 6. Resumen
- 7 7. FAQ
- 7.1 Q1: ¿Se puede ordenar un diccionario directamente?
- 7.2 Q2: ¿Cuál es la diferencia entre OrderedDict y un diccionario normal?
- 7.3 Q3: ¿Cómo ordenar cuando las claves o valores del diccionario son tipos de datos complejos?
- 7.4 Q4: ¿Cómo invertir el orden del resultado de la ordenación?
- 7.5 Q5: ¿Cómo restaurar el orden original del resultado de la ordenación?
1. Introducción
Python es apreciado por muchos desarrolladores debido a su sintaxis simple y flexible. En particular, los “diccionarios (dict)” son una estructura de datos útil que gestiona pares clave‑valor, facilitando la organización y el acceso a los datos. Sin embargo, al desarrollar programas, a menudo surge la necesidad de “ordenar un diccionario en un orden específico”.
Por ejemplo, al querer ordenar una tabla de calificaciones de estudiantes o una lista de precios de productos, será necesario organizar los datos según el orden de claves o valores. En tales situaciones, la función de “ordenar diccionarios” de Python resulta útil.
En este artículo, explicaremos los métodos concretos para ordenar diccionarios de Python por claves o valores. Para que tanto principiantes como intermedios lo comprendan, cubriremos desde los conceptos básicos hasta ejemplos avanzados, así que los invitamos a leer hasta el final.
2. Métodos de ordenación de diccionarios
Para ordenar un diccionario en Python, se utiliza principalmente la función sorted()
. Aquí, explicaremos los métodos de ordenación por clave y por valor paso a paso.
2.1 Cómo ordenar un diccionario por claves
Para ordenar el diccionario por claves, se utiliza el siguiente código。
sample_dict = {'apple': 3, 'banana': 1, 'cherry': 2}
sorted_by_key = dict(sorted(sample_dict.items(), key=lambda x: x[0]))
print(sorted_by_key)
Resultado:
{'apple': 3, 'banana': 1, 'cherry': 2}
Explicación del código:
sample_dict.items()
obtiene los pares clave-valor del diccionario como tuplas.sorted()
ordena los ítems según la clave (x[0]
).- Finalmente, se reconstruye con
dict()
para crear un nuevo diccionario.
Este método ordena alfabéticamente, lo que resulta útil cuando se desea controlar el orden de las claves.
2.2 Cómo ordenar un diccionario por valores
Para ordenar basado en valores, se utiliza el siguiente código。
sample_dict = {'apple': 3, 'banana': 1, 'cherry': 2}
sorted_by_value = dict(sorted(sample_dict.items(), key=lambda x: x[1]))
print(sorted_by_value)
Resultado:
{'banana': 1, 'cherry': 2, 'apple': 3}
Explicación del código:
key=lambda x: x[1]
ordena según el valor.- Al ordenar de menor a mayor, es adecuado para mostrar rankings o comparar números.
2.3 Ordenación usando el módulo operator
Para ordenar de manera más eficiente, se puede utilizar el módulo operator
de Python.
from operator import itemgetter
sample_dict = {'apple': 3, 'banana': 1, 'cherry': 2}
sorted_by_value = dict(sorted(sample_dict.items(), key=itemgetter(1)))
print(sorted_by_value)
Resultado:
{'banana': 1, 'cherry': 2, 'apple': 3}
Explicación del código:
itemgetter(1)
obtiene el elemento en el índice 1 (el valor).lambda
es ligeramente más rápido que la función lambda, por lo que es adecuado para datos a gran escala.

3. Reconstrucción de resultados ordenados
El resultado de ordenar un diccionario se devuelve normalmente como una lista de tuplas. Aquí se explica cómo volver a convertirlo al formato de diccionario.
3.1 Creación de diccionario ordenado
sorted_items = [('banana', 1), ('cherry', 2), ('apple', 3)]
reconstructed_dict = dict(sorted_items)
print(reconstructed_dict)
Resultado:
{'banana': 1, 'cherry': 2, 'apple': 3}
De esta manera, al pasar la lista de tuplas a la función dict()
, se puede volver fácilmente al formato de diccionario.
3.2 Uso de OrderedDict
A partir de Python 3.7, los diccionarios normales también conservan el orden, pero si se desea gestionar el orden de forma más explícita, se usa OrderedDict
.
from collections import OrderedDict
sample_dict = {'apple': 3, 'banana': 1, 'cherry': 2}
sorted_by_value = OrderedDict(sorted(sample_dict.items(), key=lambda x: x[1]))
print(sorted_by_value)
Resultado:
OrderedDict([('banana', 1), ('cherry', 2), ('apple', 3)])
Este método es particularmente útil en situaciones donde se manejan datos cuyo orden es importante.
4. Ejemplos
En esta sección, presentamos ejemplos sobre el ordenamiento de diccionarios en Python. En particular, explicamos en detalle cómo ordenar una lista de diccionarios y el ordenamiento con múltiples condiciones.
4.1 Ordenar una lista de diccionarios por una clave específica
En Python, es posible ordenar una lista de diccionarios por una clave específica. Esta función es muy útil al organizar resultados de búsqueda de bases de datos o datos JSON.
Ejemplo 1: Ordenar datos de estudiantes por edad
students = [
{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 22},
{'name': 'Charlie', 'age': 23}
]
sorted_students = sorted(students, key=lambda x: x['age'])
print(sorted_students)
Resultado:
[{'name': 'Bob', 'age': 22}, {'name': 'Charlie', 'age': 23}, {'name': 'Alice', 'age': 25}]
Explicación del código:
key=lambda x: x['age']
con la claveage
como criterio de ordenación.sorted()
devuelve una nueva lista, por lo que los datos originales no se modifican.
4.2 Ordenar con múltiples claves
Para ordenar basado en múltiples condiciones, se puede lograr usando una tupla como clave.
Ejemplo 2: Ordenar por nombre y edad
students = [
{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 22},
{'name': 'Charlie', 'age': 23},
{'name': 'Alice', 'age': 20}
]
sorted_students = sorted(students, key=lambda x: (x['name'], x['age']))
print(sorted_students)
Resultado:
[{'name': 'Alice', 'age': 20}, {'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 22}, {'name': 'Charlie', 'age': 23}]
Explicación del código:
key=lambda x: (x['name'], x['age'])
primero se ordena por nombre y luego por edad.- Al usar el formato de tupla, se puede establecer fácilmente la prioridad.
4.3 Especificar orden ascendente o descendente
En Python,sorted()
al agregar reverse=True
a la función, también es posible ordenar en orden descendente.
Ejemplo 3: Ordenar por edad en orden descendente
students = [
{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 22},
{'name': 'Charlie', 'age': 23}
]
sorted_students = sorted(students, key=lambda x: x['age'], reverse=True)
print(sorted_students)
Resultado:
[{'name': 'Alice', 'age': 25}, {'name': 'Charlie', 'age': 23}, {'name': 'Bob', 'age': 22}]
4.4 Ordenar diccionarios anidados
También es posible ordenar cuando hay diccionarios dentro de diccionarios.
Ejemplo 4: Ordenar datos anidados por puntos
data = {
'team1': {'points': 50, 'rank': 2},
'team2': {'points': 40, 'rank': 3},
'team3': {'points': 60, 'rank': 1}
}
sorted_data = dict(sorted(data.items(), key=lambda x: x[1]['points']))
print(sorted_data)
Resultado:
{'team2': {'points': 40, 'rank': 3}, 'team1': {'points': 50, 'rank': 2}, 'team3': {'points': 60, 'rank': 1}}
Explicación del código:
x[1]['points']
se usa para ordenar según la clavepoints
presente en cada diccionario.- Incluso en estructuras de datos anidadas, basta con especificar la clave necesaria para ordenar fácilmente.

5. Precauciones y mejores prácticas
Al ordenar diccionarios, tenga en cuenta los siguientes puntos.
5.1 Rendimiento con datos a gran escala
Ordenar diccionarios implica operaciones de lista, por lo que con conjuntos de datos grandes la velocidad de procesamiento puede ser un problema.Medidas de mejora:
operator.itemgetter
para optimizar el rendimiento.- Cachear los resultados después de ordenar para evitar procesar los mismos datos repetidamente.
5.2 Diferencias según la versión de Python
A partir de Python 3.7, los diccionarios normales conservan el orden de inserción, pero en versiones anteriores el orden no está garantizado.Medidas de respuesta:
- En versiones antiguas,
OrderedDict
para gestionar el orden.
6. Resumen
En este artículo, explicamos varias formas de ordenar diccionarios (dict) de Python. Desde los métodos básicos de ordenación por clave o valor, hasta ejemplos avanzados con listas y diccionarios anidados, y ordenación por múltiples condiciones, cubrimos una amplia gama.
Revisión de los puntos clave:
- Métodos de ordenación básicos:
sorted()
función para ordenar por clave o valor.lambda
función yoperator.itemgetter
pueden utilizarse para procesar de manera eficiente.
- Ejemplos de aplicación:
- Ordenar una lista de diccionarios por una clave específica o múltiples condiciones.
- Los diccionarios anidados también pueden ordenarse según una clave específica.
- Puntos a considerar:
- Considerar el rendimiento en caso de datos a gran escala.
- Comprender las diferencias de comportamiento según la versión y, si es necesario, utilizar
OrderedDict
.
Ordenar diccionarios en Python es una habilidad indispensable para la organización y el análisis de datos. Utiliza el contenido de este artículo como referencia y aplícalo en tus programas reales.
7. FAQ
Q1: ¿Se puede ordenar un diccionario directamente?
A1:Los diccionarios de Python conservan el orden, pero no se pueden ordenar directamente. Es necesario usar la función sorted()
para reordenar según claves o valores y crear un nuevo diccionario.
Q2: ¿Cuál es la diferencia entre OrderedDict
y un diccionario normal?
A2:A partir de Python 3.7, los diccionarios normales también conservan el orden de inserción, pero OrderedDict
ofrece funciones avanzadas como cambiar o mover el orden. En particular, en versiones anteriores a Python 3.6, OrderedDict
es necesario cuando se desea mantener el orden.
Q3: ¿Cómo ordenar cuando las claves o valores del diccionario son tipos de datos complejos?
A3:Se puede especificar una clave de ordenación personalizada. Por ejemplo, si se desea ordenar por la longitud de una cadena o por formato de fecha y hora, se puede pasar una función lambda
al argumento key
para definir la condición.Ejemplo:
data = {'a': [1, 2], 'b': [3], 'c': [1, 2, 3]}
sorted_data = dict(sorted(data.items(), key=lambda x: len(x[1])))
print(sorted_data)
Resultado:
{'b': [3], 'a': [1, 2], 'c': [1, 2, 3]}
Q4: ¿Cómo invertir el orden del resultado de la ordenación?
A4:Se puede invertir fácilmente añadiendo reverse=True
a la función sorted()
. Ejemplo:
data = {'apple': 3, 'banana': 1, 'cherry': 2}
sorted_data = dict(sorted(data.items(), key=lambda x: x[1], reverse=True))
print(sorted_data)
Resultado:
{'apple': 3, 'cherry': 2, 'banana': 1}
Q5: ¿Cómo restaurar el orden original del resultado de la ordenación?
A5:Como los diccionarios no tienen orden, si se desea conservar el orden original de los datos es necesario gestionarlo con índices o listas. Alternativamente, se puede usar OrderedDict
para mantener el orden. Ejemplo:
from collections import OrderedDict
data = {'apple': 3, 'banana': 1, 'cherry': 2}
ordered_data = OrderedDict(data)
print(ordered_data)