Cómo ordenar un diccionario Python por valor

  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

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 recuerda el orden en que las claves se insertan primero.

Artículo relacionado - Python dictionary

  • Cómo obtener claves de diccionario como una lista en Python
  • comments powered by Disqus