Python: elimine asociaciones de claves no deseadas

A veces, mientras trabajamos con diccionarios de Python, podemos tener problemas en los que necesitamos eliminar algunas claves no deseadas y sus anidamientos asociados. Esto puede tener aplicación en muchos dominios, incluido el desarrollo web y la programación competitiva. Analicemos ciertas formas en que se puede realizar esta tarea.

Entrada : test_dict = {‘mejor’: {‘para’: {‘geeks’: {‘CS’: {‘Gfg’: 12}}}}}
Salida : {‘mejor’: {‘para’: {}} }

Entrada : test_dict = {‘mejor’: 14, ‘gfg’: 13}
Salida : {‘mejor’: 14, ‘gfg’: 13}

Método n.º 1: uso de isinstance()+ bucle + recursividad
La combinación de las funcionalidades anteriores se puede utilizar para resolver este problema. En esto, verificamos que el valor del elemento sea un diccionario o clave usando isinstance() y recurrimos a la construcción de todas las claves que no están presentes como claves no deseadas.

# Python3 code to demonstrate working of 
# Remove unwanted Keys associations
# Using isinstance() + loop + recursion
  
def helper_fnc(test_dict, unw_keys):
    temp = {}
    for key, val in test_dict.items():
        if key in unw_keys:
            continue
        if isinstance(val, dict):
            temp[key] = helper_fnc(val, unw_keys)
        else:
            temp[key] = val
    return temp
  
# initializing dictionary
test_dict = {"Gfg" : {'is' : 45, 'good' : 15}, 
             'best' : {'for' : {'geeks' :  {'CS' : 12}}}}
  
# printing original dictionary
print("The original dictionary : " + str(test_dict))
  
# initializing unwanted keys
unw_keys = ['is', 'geeks']
  
# Remove unwanted Keys associations
# Using isinstance() + loop + recursion
res = helper_fnc(test_dict, unw_keys)
      
# printing result 
print("The filtered dictionary : " + str(res)) 
Producción :

El diccionario original: {‘Gfg’: {‘is’: 45, ‘good’: 15}, ‘best’: {‘for’: {‘geeks’: {‘CS’: 12}}}}
El diccionario filtrado : {‘Gfg’: {‘bueno’: 15}, ‘mejor’: {‘para’: {}}}

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 *