Python: aplana y elimina claves del diccionario

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))
Salida El diccionario original es: {‘a’: 14, ‘b’: 16, ‘c’: {‘d’: {‘e’: 7}}} 
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

Deja una respuesta

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