Cómo ordenar un diccionario Python por valor
- Diccionario de ordenación de Python por valor - Sólo obtiene los valores ordenados
-
Usando
operador.itemgetter
para ordenar el diccionario Python -
Usando la función
lambda
en la clave desorted
para ordenar el diccionario en Python -
OrderedDict
para obtener el resultado compatible con el diccionario en la ordenación del diccionario en Python
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.
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