Ir al contenido principal

Cómo ordenar un diccionario por valor en Python

Aprende métodos eficaces para ordenar un diccionario por valores en Python. Descubre cómo ordenar en orden ascendente y descendente, y consejos adicionales para ordenar claves.
Actualizado 29 ago 2025  · 5 min de lectura

La clasificación es una operación fundamental en la manipulación de datos, y los diccionarios en Python no son una excepción. Tanto si estamos trabajando en un proyecto complejo de análisis de datos como en un script sencillo, saber cómo ordenar eficazmente un diccionario por valor puede resultar muy útil.

En este artículo, desglosamos los distintos métodos para ordenar diccionarios por sus valores en Python, asegurándonos de que disponemos de las herramientas necesarias para organizar nuestros datos según sea necesario.

La respuesta corta: Cómo ordenar un diccionario por valor en Python

Para ordenar rápidamente un diccionario por valor, puedes utilizar la función integrada de Python .sorted() en combinación con la función lambda. Este método es sencillo y eficaz para la mayoría de los casos de uso.

student_scores = {
    'Alex': 88,
    'Ben': 75,
    'Cyrus': 93,
    'Denver': 85
}
sorted_by_values = dict(sorted(student_scores.items(), key=lambda item: item[1]))

print(sorted_by_values)

# Expected output:
# {'Ben': 75, 'Denver': 85, 'Alex': 88, 'Cyrus': 93}

Ahora, demos un paso atrás y comprendamos qué son los diccionarios de Python y por qué podríamos necesitar ordenarlos.

¿Qué son los diccionarios de Python?

Python Los diccionarios son un tipo de estructura de datos que almacena datos en pares clave-valor. Son muy versátiles y permiten realizar búsquedas, inserciones y eliminaciones rápidamente. Aquí tienes un ejemplo sencillo:

student_scores = {
    'Alex': 88,
    'Ben': 75,
    'Cyrus': 93,
    'Denver': 85
}

# No expected output

En el diccionario anterior, los nombres de los estudiantes son las claves y sus puntuaciones son los valores. 

Los diccionarios son útiles en muchos casos, como cuando necesitamos almacenar y recuperar datos de manera eficiente. Sin embargo, hay ocasiones en las que es necesario ordenar estos datos por valores en lugar de por claves, por ejemplo, cuando queremos clasificar a los estudiantes según sus puntuaciones.

Cómo ordenar un diccionario por valor en Python

Ahora, veamos más de cerca la función .sorted() en Python y cómo usarla específicamente para ordenar diccionarios por valor.

Cómo ordenar un diccionario por valor utilizando .sorted()

La función .sorted() es una herramienta potente y flexible para ordenar en Python. Para ordenar un diccionario por sus valores, podemos usar una función lambda para especificar que la ordenación se base en los valores del diccionario.

student_scores = {
    'Alex': 88,
    'Ben': 75,
    'Cyrus': 93,
    'Denver': 85
}
sorted_by_values = dict(sorted(student_scores.items(), key=lambda item: item[1]))

print(sorted_by_values)

# Expected output: 
# {'Ben': 75, 'Denver': 85, 'Alex': 88, 'Cyrus': 93}

En este ejemplo, student_scores.items() devuelve un objeto de vista que muestra una lista de los pares clave-valor del diccionario. La función .sorted() ordena estos pares por los valores (item[1]), y dict() convierte la lista ordenada de nuevo en un diccionario.

Cómo ordenar un diccionario por valor en orden descendente o ascendente

Por defecto, la función .sorted() ordena en orden ascendente. Sin embargo, dependiendo de la situación, podemos modificar fácilmente esto para ordenar en orden descendente o ascendente estableciendo el parámetro reverse en True o False.

Cómo ordenar un diccionario en orden ascendente

Como se ha mencionado, un diccionario se ordenará de forma ascendente de forma predeterminada cuando se utilice la función .sorted(). También podemos conseguir un orden ascendente configurando el parámetro reverse en False.

sorted_by_values_asc = dict(sorted(student_scores.items(), key=lambda item: item[1], reverse=False))
print(sorted_by_values_asc)

# Expected output:
# {'Ben': 75, 'Denver': 85, 'Alex': 88, 'Cyrus': 93}

Cómo ordenar un diccionario en orden descendente

Si queremos ordenar en orden ascendente, podemos establecer el reverse parámetro en True.

sorted_by_values_desc = dict(sorted(student_scores.items(), key=lambda item: item[1], reverse=True))
print(sorted_by_values_desc)

# Expected output:
# {'Cyrus': 93, 'Alex': 88, 'Denver': 85, 'Ben': 75}

Bonificación: Cómo ordenar un diccionario por clave en Python

Aunque este artículo se centra en ordenar por valores, también resulta útil saber cómo ordenar un diccionario por sus claves. Esto se puede hacer de forma similar utilizando la función .sorted() .

sorted_by_keys = dict(sorted(student_scores.items()))
print(sorted_by_keys)

# Expected output:
# {'Alex': 88, 'Ben': 75, 'Cyrus': 93, 'Denver': 85}

Para ordenar en orden descendente, simplemente configura reverse=True:

sorted_by_keys_desc = dict(sorted(student_scores.items(), reverse=True))
print(sorted_by_keys_desc)

# Expected output:
# {'Denver': 85', 'Cyrus': 93, 'Ben': 75, 'Alex': 88}

Conclusión

Ordenar un diccionario por sus valores en Python es una tarea habitual que se puede realizar fácilmente utilizando la función .sorted(). Tanto si necesitamos los datos en orden ascendente como descendente, comprender estas técnicas hará que nuestras tareas de manipulación de datos sean más sencillas y eficientes. Al dominar estos métodos de clasificación, podemos garantizar que nuestros datos estén organizados de manera coherente para adaptarse mejor a nuestras necesidades.

Preguntas frecuentes

P1: ¿Puedes ordenar un diccionario por valores si los valores son cadenas en lugar de números?

A1: Sí, podemos ordenar un diccionario por valores, incluso si los valores son cadenas. La función .sorted() ordenará los valores alfabéticamente en orden ascendente o descendente, tal y como lo hace con los números.

PREGUNTA 2: ¿Cómo puedes ordenar un diccionario por valores si contiene diccionarios anidados?

A2: Para ordenar un diccionario con diccionarios anidados, necesitamos definir una función de ordenación personalizada que extraiga y compare los valores anidados relevantes. Esto requiere una función lambda más compleja o una función independiente para gestionar la comparación.

P3: ¿Puedes ordenar un diccionario por valores sin crear un nuevo diccionario?

A3: No, los diccionarios en Python son colecciones intrínsecamente desordenadas en las versiones anteriores a la 3.7, y aunque mantienen el orden de inserción a partir de Python 3.7, no hay ningún método integrado para ordenarlos in situ. Al ordenar un diccionario, siempre se crea un nuevo diccionario con el orden deseado.

P4: ¿Cuál es la complejidad temporal de ordenar un diccionario por valores en Python?

A4: La complejidad temporal de ordenar un diccionario por valores utilizando la función « .sorted() » es O(n log n), donde n es el número de pares clave-valor del diccionario. Esto se debe a que .sorted() utiliza internamente Timsort, un algoritmo de clasificación híbrido con esta complejidad.

P5: ¿Ordenar un diccionario por valores cambiará el diccionario original?

A5: No, ordenar un diccionario por valores utilizando la función « .sorted() » crea un nuevo diccionario. El diccionario original permanece sin cambios.


Neetika Khandelwal's photo
Author
Neetika Khandelwal
LinkedIn
Soy desarrollador Java y un consumado escritor técnico especializado en ciencia de datos, inteligencia artificial (IA) y programación Java. Con más de 3 años de experiencia en el desarrollo de software, he perfeccionado una buena pericia en la creación de aplicaciones robustas y escalables y en el aprovechamiento de la versatilidad de Java para resolver problemas complejos. Me apasiona compartir conocimientos con la comunidad tecnológica en general. A través de exhaustivos artículos técnicos, tutoriales y guías, intento desmitificar intrincados temas de ciencia de datos e IA, haciéndolos accesibles a principiantes y profesionales experimentados. Actualmente tengo más de 125 blogs publicados.
Temas

¡Aprende más sobre Python con estos cursos!

Curso

Introducción a Python

4 h
6.6M
Domina los fundamentos del análisis de datos con Python en cuatro horas y descubre sus paquetes más usados.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

Tutorial

Tutorial de comprensión del diccionario Python

¡Aprende todo sobre la comprensión de diccionarios en Python: cómo puedes utilizarla para crear diccionarios, para sustituir los for loops (anidados) o las funciones lambda por map(), filter() y reduce(), ...!
Sejal Jaiswal's photo

Sejal Jaiswal

Tutorial

Anexar al diccionario Python: Cómo añadir pares clave-valor

Aprende a añadir pares clave-valor en un diccionario Python utilizando métodos como la notación entre corchetes, .update() para adiciones masivas y .setdefault() para inserciones condicionales.
Samuel Shaibu's photo

Samuel Shaibu

Tutorial

Búsqueda binaria en Python: guía completa para una búsqueda eficiente

Aprende a implementar la búsqueda binaria en Python utilizando enfoques iterativos y recursivos, y explora el módulo bisect integrado para obtener funciones de búsqueda binaria eficientes y preimplementadas.
Amberle McKee's photo

Amberle McKee

Tutorial

Tutorial de funciones de Python

Un tutorial sobre funciones en Python que cubre cómo escribir funciones, cómo invocarlas y mucho más.
Karlijn Willems's photo

Karlijn Willems

Tutorial

Las mejores técnicas para gestionar valores perdidos que todo científico de datos debe conocer

Explore varias técnicas para manejar eficazmente los valores perdidos y sus implementaciones en Python.
Zoumana Keita 's photo

Zoumana Keita

Tutorial

Tutorial de Clasificación en Árbol de Decisión en Python

En este tutorial, aprenderás Clasificación en Árbol de Decisión, medidas de selección de atributos y cómo construir y optimizar el Clasificador en Árbol de Decisión utilizando el paquete Python Scikit-learn.
Avinash Navlani's photo

Avinash Navlani

Ver másVer más