Python: elimine la clave con valor K del diccionario anidado

A veces, mientras trabajamos con registros, podemos tener un problema en el que necesitamos realizar la eliminación de una clave del diccionario anidado cuyo valor es específico para K. Este es un problema común y tiene su aplicación en dominios de datos como el desarrollo web. Analicemos ciertas formas en que se puede realizar esta tarea.

Entrada : test_dict = {‘CS’: {‘invaluable’: 6}, ‘es’: {‘mejor’: 6}, ‘gfg’: {‘mejor’: 6}}
Salida : {‘CS’: {} , ‘gfg’: {}, ‘es’: {}}

Entrada : test_dict = {‘CS’: {‘invaluable’: 9}, ‘es’: {‘mejor’: 8}, ‘gfg’: {‘mejor’: 7}}
Salida : {‘CS’: {‘ no tiene precio’: 9}, ‘es’: {‘mejor’: 8}, ‘gfg’: {‘mejor’: 7}}

Método #1: Usar loop + isinstance() +filter()
La combinación de las funciones anteriores se puede usar para resolver este problema. En esto, realizamos la tarea del valor K usando filter() y isinstance() se usa para probar el diccionario anidado. La construcción del diccionario se realiza mediante bucle.

# Python3 code to demonstrate working of 
# Remove K valued key from Nested Dictionary
# Using loop + isinstance() + filter()
  
# initializing dictionary
test_dict = {'gfg' : {'best' : 4, 'good' : 5}, 
             'is' : {'better' : 6, 'educational' : 4},
             'CS' : {'priceless' : 6}}
  
# printing original dictionary
print("The original dictionary : " + str(test_dict))
  
# initializing rem_val
rem_val = 6
  
# Remove K valued key from Nested Dictionary
# Using loop + isinstance() + filter()
def rem_vals(ele):
  global rem_val
  key, val = ele
  return val != rem_val
  
res = dict()
for key, val in test_dict.items():
  if isinstance(val, dict):
    res[key] = dict(filter(rem_vals, val.items()))
  else:
    res[key] = val
  
# printing result 
print("Dictionary after removal : " + str(res)) 
Producción :

El diccionario original: {‘es’: {‘educativo’: 4, ‘mejor’: 6}, ‘gfg’: {‘mejor’: 4, ‘bueno’: 5}, ‘CS’: {‘invaluable’: 6}}
Diccionario después de la eliminación: {‘is’: {‘educational’: 4}, ‘gfg’: {‘best’: 4, ‘good’: 5}, ‘CS’: {}}

Método n.º 2: usar la comprensión del diccionario + isinstance()+ lamda
La combinación de las funcionalidades anteriores se puede usar para realizar esta tarea en una sola línea usando la función lambda.

# Python3 code to demonstrate working of 
# Remove K valued key from Nested Dictionary
# Using dictionary comprehension + isinstance() + lamda
  
# initializing dictionary
test_dict = {'gfg' : {'best' : 4, 'good' : 5}, 
             'is' : {'better' : 6, 'educational' : 4},
             'CS' : {'priceless' : 6}}
  
# printing original dictionary
print("The original dictionary : " + str(test_dict))
  
# initializing rem_val
rem_val = 6
  
# Remove K valued key from Nested Dictionary
# Using dictionary comprehension + isinstance() + lamda
fnc = lambda sub: { key1: fnc(val1) if isinstance(val1, dict) else val1
      for key1, val1 in sub.items() if val1 != rem_val}
res = fnc(test_dict)
  
# printing result 
print("Dictionary after removal : " + str(res)) 
Producción :

El diccionario original: {‘es’: {‘educativo’: 4, ‘mejor’: 6}, ‘gfg’: {‘mejor’: 4, ‘bueno’: 5}, ‘CS’: {‘invaluable’: 6}}
Diccionario después de la eliminación: {‘is’: {‘educational’: 4}, ‘gfg’: {‘best’: 4, ‘good’: 5}, ‘CS’: {}}

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 *