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))
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))
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