Cómo ordenar un diccionario Python por valor

Jinku Hu 30 enero 2023
  1. Diccionario de ordenación de Python por valor - Sólo obtiene los valores ordenados
  2. Usando operador.itemgetter para ordenar el diccionario Python
  3. Usando la función lambda en la clave de sorted para ordenar el diccionario en Python
  4. OrderedDict para obtener el resultado compatible con el diccionario en la ordenación del diccionario en Python
Cómo ordenar un diccionario Python por valor

El diccionario Python es un tipo de datos sin orden, por lo tanto, no se puede ordenar el diccionario Python por sus claves o valores. Pero sí se podría obtener la representación del diccionario Python ordenado en otro tipo de datos como la lista.

Supongamos que tenemos un diccionario como el que se muestra a continuación,

exampleDict = {"first": 3, "second": 4, "third": 2, "fourth": 1}

Diccionario de ordenación de Python por valor - Sólo obtiene los valores ordenados

sortedDict = sorted(exampleDict.values())
# Out: [1, 2, 3, 4]

Usando operador.itemgetter para ordenar el diccionario Python

import operator

sortedDict = sorted(exampleDict.items(), key=operator.itemgetter(1))
# Out: [('fourth', 1), ('third', 2), ('first', 3), ('second', 4)]

El programa exampleDict.items devuelve el par llave-valor de los elementos del diccionario. key=operador.itemgetter(1) especifica que la clave de comparación es el valor del diccionario, mientras que operador.itemgetter(0) tiene la clave de comparación de la clave del diccionario.

Usando la función lambda en la clave de sorted para ordenar el diccionario en Python

También puedes usar la función lambda para obtener la clave de comparación en lugar de Operador.itemgetter.

sortedDict = sorted(exampleDict.items(), key=lambda x: x[1])
# Out: [('fourth', 1), ('third', 2), ('first', 3), ('second', 4)]

exampleDict.items() devuelve una lista de pares clave-valor del diccionario y el tipo de datos de su elemento es tuple. x es el elemento de esta tupla, donde x[0] es la clave y x[1] es el valor. key=lambda x:x[1] indica que la clave de comparación es el valor de los elementos del diccionario.

El parámetro opcional reverse puede ser establecido como True si los valores necesitan ser ordenados en orden descendente.

sortedDict = sorted(exampleDict.items(), key=lambda x: x[1], reverse=True)
# Out: [('second', 4), ('first', 3), ('third', 2), ('fourth', 1)]

OrderedDict para obtener el resultado compatible con el diccionario en la ordenación del diccionario en Python

El código de ejemplo que se muestra arriba devuelve el resultado como una lista, pero no como un tipo de diccionario. Si quieres mantener el resultado como un tipo compatible con el diccionario, OrderedDict introducido desde Python 2.7 es la elección correcta.

from collections import OrderedDict

sortedDict = OrderedDict(sorted(exampleDict.items(), key=lambda x: x[1]))
# Out: OrderedDict([('fourth', 1), ('third', 2), ('first', 3), ('second', 4)])

El OrderedDict es una subclase dict de Python que soporta los métodos usuales y también recadena el orden en que las claves se insertan primero.

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - Python Dictionary