Dado un diccionario, realice el aplanamiento y la eliminación de ciertas claves del diccionario.
Entrada : test_dict = {‘a’: 14, ‘b’: 16, ‘c’: {‘d’: {‘e’: 7}}}, rem_keys = [“c”, “a”, “d” ]
Salida : {‘b’: 16, ‘e’: 7}
Explicación : Se han eliminado todas las «c», «a» y «d».
Entrada : test_dict = {‘a’: 14, ‘b’: 16, ‘c’: {‘d’: {‘e’: 7}}}, rem_keys = [“c”, “d”, “e” ]
Salida : {‘a’: 14, ‘b’: 16}
Explicación : Se han eliminado todas las «c», «e» y «d».
Método: Usar recursividad + isinstance() + loop
La combinación de las funciones anteriores se puede utilizar para resolver este problema. En esto, verificamos el diccionario como instancia para el diccionario anidado usando isinstance() y recurrimos cada vez para el diccionario interno. El bucle se utiliza para iterar las claves.
Python3
# Python3 code to demonstrate working of # Flatten and remove keys from Dictionary # Using loop + recursion + isinstance() # function to compute removal and flattening def hlper_fnc(test_dict, rem_keys): if not isinstance(test_dict, dict): return test_dict res = {} for key, val in test_dict.items(): rem = hlper_fnc(val, rem_keys) # performing removal if key not in rem_keys: res[key] = rem else: if isinstance(rem, dict): res.update(rem) return res # initializing dictionary test_dict = {'a': 14, 'b': 16, 'c': {'d': {'e': 7}}} # printing original dictionary print("The original dictionary is : " + str(test_dict)) # initializing removal keys rem_keys = ["c", "d"] # calling helper function for task res = hlper_fnc(test_dict, rem_keys) # printing result print("The removed and flattened dictionary : " + str(res))
El diccionario eliminado y aplanado: {‘a’: 14, ‘b’: 16, ‘e’: 7}
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