Python: claves anidadas ordenadas en el diccionario

A veces, mientras trabajamos con diccionarios de Python, podemos tener un problema en el que necesitamos extraer todas las claves de los diccionarios anidados y mostrarlos en orden. Este tipo de aplicación puede darse en dominios en los que trabajamos con datos. Analicemos ciertas formas en que se puede realizar esta tarea.

Método #1: Usar yield + isinstance() + loop
La combinación de las funciones anteriores se puede usar para realizar esta tarea. En este, realizamos la tarea de detección de claves usando isinstance(). La palabra clave yield se utiliza para agregar resultados intermedios.

# Python3 code to demonstrate working of 
# Sorted Nested Keys in Dictionary
# Using yield + isinstance() + loop
  
def hlper_fnc(test_dict):
     for key, val in test_dict.items():
         yield key
         if isinstance(val, dict):
             yield from val
  
# initializing dictionary
test_dict = {'gfg': 43, 'is': {'best' : 14, 'for' : 35, 'geeks' : 42}, 'and' : {'CS' : 29}}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
# Sorted Nested Keys in Dictionary
# Using yield + isinstance() + loop
res = sorted(hlper_fnc(test_dict))
      
# printing result 
print("The sorted nested keys : " + str(res)) 
Producción :

El diccionario original es: {‘and’: {‘CS’: 29}, ‘gfg’: 43, ‘is’: {‘for’: 35, ‘best’: 14, ‘geeks’: 42}
} claves anidadas: [‘CS’, ‘y’, ‘mejor’, ‘para’, ‘geeks’, ‘gfg’, ‘es’]

Método #2: Usarsorted() + list comprehension + isinstance()
la combinación de las funciones anteriores ofrece una solución abreviada a este problema. En esto, la clasificación se realiza mediante sorted(). El isinstance() se usa para detectar claves.

# Python3 code to demonstrate working of 
# Sorted Nested Keys in Dictionary
# Using sorted() + list comprehension + isinstance()
  
# initializing dictionary
test_dict = {'gfg': 43, 'is': {'best' : 14, 'for' : 35, 'geeks' : 42}, 'and' : {'CS' : 29}}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
# Sorted Nested Keys in Dictionary
# Using sorted() + list comprehension + isinstance()
res = sorted([key for val in test_dict.values() if isinstance(val, dict)
             for key in val] + list(test_dict))
      
# printing result 
print("The sorted nested keys : " + str(res)) 
Producción :

El diccionario original es: {‘and’: {‘CS’: 29}, ‘gfg’: 43, ‘is’: {‘for’: 35, ‘best’: 14, ‘geeks’: 42}
} claves anidadas: [‘CS’, ‘y’, ‘mejor’, ‘para’, ‘geeks’, ‘gfg’, ‘es’]

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 *