Python: clave de filtro del elemento anidado

A veces, mientras trabajamos con diccionarios de Python, podemos tener un problema en el que necesitamos extraer las claves que tienen un par clave-valor particular como parte de su elemento anidado. Este tipo de problema es común en el dominio de desarrollo web. Analicemos ciertas formas en que se puede realizar esta tarea.

Entrada : test_dict = {‘gfg’: {‘mejor’: 10, ‘bueno’: 5}}
Salida : [‘gfg’]

Entrada : test_dict = {‘gfg’: {‘mejor’: 10, ‘bueno’: 12}}
Salida : []

Método #1: Usar bucle +__contains__
La combinación de las funciones anteriores constituye la forma de fuerza bruta para realizar esta tarea. En esto, iteramos para cada clave usando bucle y verificamos la presencia de valor usando __contains__.

# Python3 code to demonstrate working of 
# Filter Key from Nested item
# Using loop + __contains__
  
# initializing dictionary
test_dict = {'gfg' : {'best' : 4, 'good' : 5}, 
             'is' : {'better' : 6, 'educational' : 4},
             'CS' : {'priceless' : 6}, 
             'Maths' : {'good' : 5}}
  
# printing original dictionary
print("The original dictionary : " + str(test_dict))
  
# initializing dictionary
que_dict = {'good' : 5}
  
# Filter Key from Nested item
# Using loop + __contains__
res = []
for key, val in test_dict.items():
  if(test_dict[key].__contains__('good')):
    if(test_dict[key]['good'] == que_dict['good']):
        res.append(key)
  
# printing result 
print("Match keys : " + str(res)) 
Producción :

El diccionario original: {‘CS’: {‘priceless’: 6}, ‘is’: {‘better’: 6, ‘educational’: 4}, ‘gfg’: {‘good’: 5, ‘best’: 4}, ‘Matemáticas’: {‘bueno’: 5}}
Teclas de combinación: [‘gfg’, ‘Matemáticas’]

Método #2: Uso de la comprensión del diccionario +get()
La combinación de las funciones anteriores proporciona otra forma de resolver este problema. En esto, realizamos la verificación de la presencia del elemento usando get().

# Python3 code to demonstrate working of 
# Filter Key from Nested item
# Using dictionary comprehension + get()
  
# initializing dictionary
test_dict = {'gfg' : {'best' : 4, 'good' : 5}, 
             'is' : {'better' : 6, 'educational' : 4},
             'CS' : {'priceless' : 6}, 
             'Maths' : {'good' : 5}}
  
# printing original dictionary
print("The original dictionary : " + str(test_dict))
  
# initializing dictionary
que_dict = {'good' : 5}
  
# Filter Key from Nested item
# Using dictionary comprehension + get()
res = [ idx for idx in test_dict if test_dict[idx].get('good') == que_dict['good'] ]
  
# printing result 
print("Match keys : " + str(res)) 
Producción :

El diccionario original: {‘CS’: {‘priceless’: 6}, ‘is’: {‘better’: 6, ‘educational’: 4}, ‘gfg’: {‘good’: 5, ‘best’: 4}, ‘Matemáticas’: {‘bueno’: 5}}
Teclas de combinación: [‘gfg’, ‘Matemáticas’]

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 *