Cómo ordenar el diccionario por clave en Python

Azaz Farooq 10 octubre 2023
  1. Diccionario Python para ordenar por clave con el método dict.keys()
  2. Diccionario Python para ordenar por clave con el método dict.items()
  3. Python ordena el diccionario por clave con el método OrderedDict()
  4. Ordenar el diccionario en orden inverso en Python
  5. Diccionario de ordenación de Python con método de función de tecla personalizada
Cómo ordenar el diccionario por clave en Python

El diccionario Python es el mismo que la tabla hash que guarda las entradas evaluando los hashes de las teclas, y la secuencia de las entradas es imposible de anticipar. Este artículo introducirá cómo ordenar el diccionario por clave en Python.

Diccionario Python para ordenar por clave con el método dict.keys()

Usemos el siguiente diccionario como ejemplo.

dict = {"hello": 56, "at": 23, "test": 43, "this": 43}

La salida del dict.keys() es

dict_keys(["hello", "at", "test", "this"])

Podríamos hacer un nuevo diccionario ordenado a partir de esta lista de llaves no ordenadas.

sorted(dict.keys())

Resultado:

['at', 'hello', 'test', 'this']

Aplicamos repetidamente la clasificación en esta lista ordenada seleccionando cada entrada del diccionario.

for key in sorted(dict.keys()):
    print(key, " :: ", dict[key])

Resultado:

at  ::  23
hello  ::  56
test  ::  43
this  ::  43

Diccionario Python para ordenar por clave con el método dict.items()

También podemos ordenar un diccionario por clave en Python con el método dict.items().

¿Generará una lista que contenga pares clave-valor?

dict.items()

Resultado:

dict_items([('hello', 56), ('at', 23), ('test', 43), ('this', 43)])

Podríamos hacer una lista ordenada por la siguiente función. Ordenará las entradas del diccionario según los valores de las claves.

sorted(dict.keys())

Resultado:

['at', 'hello', 'test', 'this']

Ahora para producir el par llave-valor del diccionario, usamos el siguiente código.

for elem in sorted(dict.items()):
    print(elem[0], " ::", elem[1])

Resultado:

at  :: 23
hello  :: 56
test  :: 43
this  :: 43

En términos de complejidad, es más poderoso que el enfoque anterior. Ya que no necesitamos comprobar el valor de la clave después de ordenar la lista iterable, como en dict.key().

Python ordena el diccionario por clave con el método OrderedDict()

Alternativamente, podemos ordenar los elementos del diccionario por valor clave usando el módulo collections.

import collections

d = {2: 13, 1: 9, 4: 25, 3: 0}
result = collections.OrderedDict(sorted(d.items()))
print(result)

Resultado:

OrderedDict([(1, 9), (2, 13), (3, 0), (4, 25)])

Ordenar el diccionario en orden inverso en Python

Anteriormente, clasificamos los elementos del diccionario en orden ascendente. Ahora discutimos algunas formas de ordenar los elementos del diccionario en orden descendente.

La sintaxis es:

sorted(iterable_sequence, reverse=True)

El siguiente código ordenó y revirtió los elementos del diccionario.

dict = {"hello": 56, "at": 23, "test": 43, "this": 43}
for elem in sorted(dict.items(), reverse=True):
    print(elem[0], " ::", elem[1])

El parámetro reverse=true asegura que el diccionario ordenado se invierte.

Resultado:

this  :: 43

test  :: 43

hello  :: 56

at  :: 23

Diccionario de ordenación de Python con método de función de tecla personalizada

Este método ordenará los elementos del diccionario usando la longitud de la cadena key.

sorted(iterable_sequence, key=Function)

La función lambda que devuelve el tamaño de la cadena se le da al parámetro key.

listofTuples = sorted(dict.items() ,  key=lambda x: len (x[0] ) )
for elem in listofTuples :
    print(elem[0] , " ::" , elem[1] )

Resultado:

at  :: 23

test  :: 43

this  :: 43

hello  :: 56

Artículo relacionado - Python Dictionary