Dado un diccionario, extraiga elementos de un nivel particular.
Ejemplos:
Entrada : {“Gfg” : { “n1”: 3, “nd2”: { “n2” : 6 }}, “is” : { “ne1”: 5, “ndi2”: { “ne2” : 8, “ ne22”: 10 } }}, K = 2
Salida : {‘n2’: 6, ‘ne2’: 8, ‘ne22’: 10}
Explicación : se extraen los elementos del segundo anidamiento.Entrada : {“Gfg” : { “n1”: 3, “nd2”: { “n2” : 6 }}, “is” : { “ne1”: 5, “ndi2”: { “ne2” : 8, “ ne22” : 10 } }}, K = 1
Salida : {“n1”: 3, “ne1”: 5}
Explicación : Elementos del 1er anidamiento extraídos.
Método: Usando isinstance() + recursividad
Esta es una de las formas en que se puede realizar esta tarea. En esto, realizamos la recursividad requerida para los anidamientos internos, y se usa isinstance para diferenciar entre la instancia de dict y otros tipos de datos para probar el anidamiento.
Python3
# Python3 code to demonstrate working of # Get particular Nested level Items from Dictionary # Using isinstance() + recursion # helper function def get_items(test_dict, lvl): # querying for lowest level if lvl == 0: yield from ((key, val) for key, val in test_dict.items() if not isinstance(val, dict)) else: # recur for inner dictionaries yield from ((key1, val1) for val in test_dict.values() if isinstance(val, dict) for key1, val1 in get_items(val, lvl - 1)) # initializing dictionary test_dict = {"Gfg": { "n1": 3, "nd2": { "n2": 6 }}, "is": { "ne1": 5, "ndi2": { "ne2": 8, "ne22": 10 } }} # printing original dictionary print("The original dictionary is : " + str(test_dict)) # initializing K K = 2 # calling function res = get_items(test_dict, K) # printing result print("Required items : " + str(dict(res)))
El diccionario original es: {‘Gfg’: {‘n1’: 3, ‘nd2’: {‘n2’: 6}}, ‘is’: {‘ne1’: 5, ‘ndi2’: {‘ne2’: 8, ‘ne22’: 10}}}
Elementos necesarios: {‘n2’: 6, ‘ne2’: 8, ‘ne22’: 10}
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