Python: elimine los elementos de valor K del anidamiento del diccionario

Dado un diccionario con anidamientos múltiples, elimine todas las claves con valor K.

Entrada : [{“Gfg”: {“a”: 5, “b”: 8, “c”: 9}}, {“es”: {“j”: 8, “k”: 10}}, { “Mejor”: {“i”: 16}}], K = 8
Salida : [{‘a’: 5}, {‘c’: 9}, {‘k’: 10}, {‘i’: 16 }]
Explicación : se han eliminado todas las claves con valor 8, («b», «j»).

Entrada : [{“Gfg”: {“a”: 5, “b”: 8, “c”: 9}}, {“es”: {“j”: 8, “k”: 10}}, { “Mejor”: {“i”: 16}}], K = 5
Salida : [{‘c’: 9}, {‘k’: 10}, {‘i’: 16}, {“j”: 8 }, {“b”: 8}]
Explicación : “a” con 5 como valor eliminado.

Método n. ° 1: usar loop + comprensión de diccionario

La combinación de las funciones anteriores se puede utilizar para resolver este problema. En esto, iteramos para todas las claves de anidamiento usando loop. y eliminar valores. Este enfoque es para el anidamiento de diccionario de un solo nivel. 

Python3

# Python3 code to demonstrate working of 
# Remove K value items from dictionary nestings
# Using dictionary comprehension + loop
  
# initializing list
test_list = [{"Gfg" : {"a" : 5, "b" : 8, "c" : 9}},
             {"is" : {"f" : 8, "j" : 8, "k" : 10}},
             {"Best" : {"i" : 16}}]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing K 
K = 8
  
res = list()
  
for sub in test_list:
    for key, val in sub.items():
          
        # iterating for 1st nesting only
        for key1, val1 in val.items():
            if val1 != K:
                res.append({key1 : val1})
  
# printing result 
print("The dictionary after value removal : " + str(res)) 
Producción

La lista original es: [{‘Gfg’: {‘a’: 5, ‘b’: 8, ‘c’: 9}}, {‘is’: {‘f’: 8, ‘j’: 8, ‘k’: 10}}, {‘Best’: {‘i’: 16}}]
El diccionario después de la eliminación de valores: [{‘a’: 5}, {‘c’: 9}, {‘k’: 10}, {‘yo’: 16}]

Método n.º 2: uso de recursión + bucle (para anidamiento múltiple)

Esta es otra forma más en la que se puede realizar esta tarea. En esto, resolvemos un problema más genérico de atender a los elementos del diccionario interno también usando la recursividad.

Python3

# Python3 code to demonstrate working of 
# Remove K value items from dictionary nestings
# Using recursion + loop (For multiple nesting)
  
res = []
  
# helper function to solve problem
def hlper_fnc(test_dict):
    for key in test_dict:
        if type(test_dict[key]) == dict:
            hlper_fnc(test_dict[key])
        else:
            if test_dict[key] != K:
                res.append({key : test_dict[key]})
  
# initializing dictionary
test_dict = {"Gfg" : {"a" : 5, "b" : 8, "c" : 9},
             "is" : {"f" : 8, "l" : { "j" : 8, "k" : 10}},
             "Best" : {"i" : {"k" : { "o" : 8}}}}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
# initializing K 
K = 8
  
# computing result
hlper_fnc(test_dict)
  
# printing result 
print("The dictionary after value removal : " + str(res)) 
Producción

El diccionario original es: {‘Gfg’: {‘a’: 5, ‘b’: 8, ‘c’: 9}, ‘is’: {‘f’: 8, ‘l’: {‘j’: 8, ‘k’: 10}}, ‘Best’: {‘i’: {‘k’: {‘o’: 8}}}}
El diccionario después de la eliminación de valores: [{‘a’: 5}, { ‘c’: 9}, {‘k’: 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

Deja una respuesta

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