¿Cómo ordenar un diccionario por clave y valor en Python?

Apr 2, 2020 – 4 min read

Hola a todos. Hoy voy a dar unos pequeños consejos sobre la ordenación de diccionarios en Python (Python3). Como todos sabemos los diccionarios son intrínsecamente sin orden, pero otros tipos, como las listas y las tuplas no lo son. No es posible ordenar un diccionario, pero podemos hacer una representación de un diccionario que esté ordenado. Así que necesitas un tipo de datos ordenado para representar claves o valores ordenados, que será una lista – probablemente una lista de tuplas.

Diccionario en Python (Fuente)

Proceso de ordenación de diccionarios

Como podemos ver en la primera figura los diccionarios en python son un conjunto de pares clave-valor donde cada par de clave-valor se llama un elemento. Ahora vamos a centrarnos en el tema principal: Los diccionarios pueden ser ordenados por claves o por valores. Como se delinea en la segunda figura podemos ordenar keys(), values(), y items() de un diccionario. Centrémonos primero en la ordenación por values().

Ordenación del diccionario por valores

Tengamos un diccionario formado por varias organizaciones de renombre como keys() y su año de fundación como values(). Así que queremos tener un diccionario ordenado donde los elementos de la organización más antigua será el primer elemento y la organización más joven será el último.

d = {"Apple": 1976, "Microsoft":1975, "Facebook":2004, "Sony":1946, "IBM":1911, "Amazon": 1994 }

Como podemos ver en el diccionario d, IBM es la organización más antigua por lo tanto será la primera clave del diccionario ordenado y Facebook será el último.

print(sorted(d.items(), key = lambda kv:kv))
print(sorted(d.items(), key = lambda kv:kv, reverse = True))
print(dict(sorted(d.items(), key = lambda kv:kv)))
sort_d = dict(sorted(d.items(), key = lambda kv:kv))
print(sort_d)

Salida:



{'IBM': 1911, 'Sony': 1946, 'Microsoft': 1975, 'Apple': 1976, 'Amazon': 1994, 'Facebook': 2004}
{'IBM': 1911, 'Sony': 1946, 'Microsoft': 1975, 'Apple': 1976, 'Amazon': 1994, 'Facebook': 2004}

Como estamos ordenando d.items(), que es una lista de tuplas donde keys()son el primer parámetro y values() son el segundo parámetro de cada tupla. Para ordenar la lista de tuplas hemos elegido los valores, es decir, el segundo parámetro de cada tupla como clave. En la primera línea, la clave se define como una función lambda donde el valor de la clave es el segundo parámetro de los elementos. Esta ordenación creará una lista de tuplas ordenadas. podemos convertirla en un diccionario utilizando la función dict() como se muestra en la tercera línea de código. También podemos invertir la ordenación que en resultado crea una lista de tuplas con la más nueva en primer lugar y la más antigua será el último elemento como se indica en la segunda línea del código. También podemos guardar el diccionario ordenado a otro nombre como se muestra arriba.

ordenando el diccionario por la clave

print(sorted(d.items()))
print(dict(sorted(d.items())))
print(dict(sorted(d.items(), key = lambda kv:kv)))
print(sorted(d.items(), reverse = True))

Salida:


{'Amazon': 1994, 'Apple': 1976, 'Facebook': 2004, 'IBM': 1911, 'Microsoft': 1975, 'Sony': 1946}
{'Amazon': 1994, 'Apple': 1976, 'Facebook': 2004, 'IBM': 1911, 'Microsoft': 1975, 'Sony': 1946}

Como sabemos que el keys() aquí en el diccionario d son cadenas entonces la ordenación por la clave creará una lista de tuplas en orden alfabético en el keys() de cada elemento y usando la función dict() se forma el diccionario. también podemos utilizar la función lambda para definir la clave que es casi innecesaria, sólo he mostrado para hacer una comparación en la definición de la clave en la ordenación.

Eso es todo. Por favor, visite mi perfil para obtener más historias sobre el aprendizaje automático y el análisis de datos. Cualquier tipo de sugerencias y críticas son muy apreciadas. Aquí están mis historias anteriores basadas en un curso de posgrado ofrecido por la Universidad de Inha, Rep de Corea:

Historias anteriores:

Parte-1: Python básico e instalación
Parte-2: Capítulo-2: Estructura de datos de Python – Tipo de datos
Parte-3: Declaraciones de control (bucles) en Python
Parte:4: Funciones de Python &Módulos
Parte:5: Programación orientada a objetos en Python – Schafer & DataCamp.
Parte-6: Los tipos & procedimiento de Aprendizaje Automático
Parte-7: Ingeniería de características para el Aprendizaje Automático

Deja una respuesta

Tu dirección de correo electrónico no será publicada.