Python – Ordenar claves anidadas por valor

A veces, mientras trabajamos con registros de datos, podemos tener un problema en el que necesitamos realizar la clasificación de claves anidadas del diccionario por el valor de ocurrencia. Esto puede tener aplicaciones en la organización de puntuaciones, precios, etc. Analicemos una forma en que se puede realizar esta tarea.

Método n.º 1: Uso de la sorted()expresión + lambda + generador
La combinación de los métodos anteriores se puede utilizar para realizar esta tarea. En esto, realizamos la tarea de ordenar usando sorted() y lambda y la expresión del generador se usan para enlazar y extraer valores de diccionarios.

# Python3 code to demonstrate working of 
# Sort Nested keys by Value
# Using sorted() + generator expression + lamda
  
# initializing dictionary
test_dict = {'Nikhil' : {'English' : 5, 'Maths' :  2, 'Science' : 14},
             'Akash' : {'English' : 15, 'Maths' :  7, 'Science' : 2},
             'Akshat' : {'English' : 5, 'Maths' :  50, 'Science' : 20}}
  
# printing original dictionary
print("The original dictionary : " + str(test_dict))
  
# Sort Nested keys by Value
# Using sorted() + generator expression + lamda
res = {key : dict(sorted(val.items(), key = lambda ele: ele[1]))
       for key, val in test_dict.items()}
      
# printing result 
print("The sorted dictionary : " + str(res)) 
Producción :

El diccionario original: {‘Nikhil’: {‘Inglés’: 5, ‘Matemáticas’: 2, ‘Ciencia’: 14}, ‘Akash’: {‘Inglés’: 15, ‘Matemáticas’: 7, ‘Ciencia’: 2}, ‘Akshat’: {‘Inglés’: 5, ‘Matemáticas’: 50, ‘Ciencia’: 20}}
El diccionario ordenado: {‘Nikhil’: {‘Matemáticas’: 2, ‘Inglés’: 5, ‘ Ciencia’: 14}, ‘Akash’: {‘Ciencia’: 2, ‘Matemáticas’: 7, ‘Inglés’: 15}, ‘Akshat’: {‘Inglés’: 5, ‘Ciencia’: 20, ‘Matemáticas’ : 50}}

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *