Python | Ordenar diccionario anidado por clave

La clasificación tiene aplicaciones bastante vívidas y, a veces, podemos encontrarnos con el problema de que necesitamos clasificar el diccionario anidado por la clave anidada. Este tipo de aplicación es popular en el desarrollo web ya que el formato JSON es bastante popular. Analicemos ciertas formas en que esto se puede realizar.

Método #1: UsarOrderedDict() + sorted()

Esta tarea se puede realizar usando la función OrderedDict que convierte el diccionario a un orden específico como se menciona en sus argumentos manipulados por la función ordenada en él para ordenar por el valor de la clave pasada.

# Python3 code to demonstrate
# Sort nested dictionary by key
# using OrderedDict() + sorted()
from collections import OrderedDict
from operator import getitem
  
# initializing dictionary
test_dict = {'Nikhil' : { 'roll' : 24, 'marks' : 17},
             'Akshat' : {'roll' : 54, 'marks' : 12}, 
             'Akash' : { 'roll' : 12, 'marks' : 15}}
  
# printing original dict
print("The original dictionary : " + str(test_dict))
  
# using OrderedDict() + sorted()
# Sort nested dictionary by key
res = OrderedDict(sorted(test_dict.items(),
       key = lambda x: getitem(x[1], 'marks')))
  
# print result
print("The sorted dictionary by marks is : " + str(res))
Producción :

El diccionario original: {‘Nikhil’: {‘roll’: 24, ‘marks’: 17}, ‘Akash’: {‘roll’: 12, ‘marks’: 15}, ‘Akshat’: {‘roll’: 54, ‘marks’: 12}}
El diccionario ordenado por marcas es: OrderedDict([(‘Akshat’, {‘roll’: 54, ‘marks’: 12}), (‘Akash’, {‘roll’: 12 , ‘marcas’: 15}), (‘Nikhil’, {‘tirar’: 24, ‘marcas’: 17})])

Método #2: Usarsorted()

Podemos lograr mejor el resultado anterior si solo usamos la función ordenada, ya que devuelve el resultado en un formato más utilizable, dicta y realiza exactamente la tarea deseada.

# Python3 code to demonstrate
# Sort nested dictionary by key
# using sorted()
  
# initializing dictionary
test_dict = {'Nikhil' : { 'roll' : 24, 'marks' : 17},
             'Akshat' : {'roll' : 54, 'marks' : 12}, 
             'Akash' : { 'roll' : 12, 'marks' : 15}}
  
# printing original dict
print("The original dictionary : " + str(test_dict))
  
# using sorted()
# Sort nested dictionary by key
res = sorted(test_dict.items(), key = lambda x: x[1]['marks'])
  
# print result
print("The sorted dictionary by marks is : " + str(res))
Producción :

El diccionario original: {‘Nikhil’: {‘marks’: 17, ‘roll’: 24}, ‘Akshat’: {‘marks’: 12, ‘roll’: 54}, ‘Akash’: {‘marks’: 15, ‘roll’: 12}}
El diccionario ordenado por marcas es: [(‘Akshat’, {‘marks’: 12, ‘roll’: 54}), (‘Akash’, {‘marks’: 15, ‘ tirada’: 12}), (‘Nikhil’, {‘marcas’: 17, ‘tirada’: 24})]

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 *