Dada una lista de diccionarios, la tarea es escribir un programa en python que extraiga solo aquellos diccionarios que contengan un valor clave dado específico.
Entrada : test_list = [{‘gfg’: 2, ‘is’: 8, ‘good’: 3}, {‘gfg’: 1, ‘for’: 10, ‘geeks’: 9}, {‘love’: 3}], clave = «gfg»
Salida : [{‘gfg’: 2, ‘is’: 8, ‘good’: 3}, {‘gfg’: 1, ‘for’: 10, ‘geeks’: 9 }]
Explicación : gfg está presente en los primeros dos diccionarios, por lo tanto, se extrae.
Entrada : test_list = [{‘gfg’: 2, ‘is’: 8, ‘good’: 3}, {‘gfg’: 1, ‘for’: 10, ‘geeks’: 9}, {‘love’: 3, ‘gfgs’: 4}], clave = «bueno»
Salida : [{‘gfg’: 2, ‘es’: 8, ‘bueno’: 3}]
Explicación : bueno está presente en el primer diccionario, por lo tanto, se extrae.
Método 1: usar la comprensión de listas y las claves()
En esto, probamos la presencia de la clave usando el operador in , las claves se extraen usando key(). La comprensión de listas se utiliza para iterar sobre diferentes diccionarios.
Ejemplo:
Python3
# Python3 code to demonstrate working of # Extract Dictionaries with given Key # Using list comprehension + keys() # initializing list test_list = [{'gfg': 2, 'is': 8, 'good': 3}, {'gfg': 1, 'for': 10, 'geeks': 9}, {'love': 3}] # printing original list print("The original list is : " + str(test_list)) # initializing key key = 'gfg' # checking for key using in operator # keys() used to get keys res = [sub for sub in test_list if key in list(sub.keys())] # printing result print("The filtered Dictionaries : " + str(res))
Producción:
La lista original es: [{‘gfg’: 2, ‘is’: 8, ‘good’: 3}, {‘gfg’: 1, ‘for’: 10, ‘geeks’: 9}, {‘love’ : 3}]
Los diccionarios filtrados: [{‘gfg’: 2, ‘is’: 8, ‘good’: 3}, {‘gfg’: 1, ‘for’: 10, ‘geeks’: 9}]
Método 2: Usar filter() y lambda
En esto, realizamos la tarea de filtrar usando filter() y la función lambda se usa para inyectar lógica en la filtración. El operador in se utiliza para comprobar la presencia de una clave específica.
Ejemplo:
Python3
# Python3 code to demonstrate working of # Extract Dictionaries with given Key # Using filter() + lambda # initializing list test_list = [{'gfg': 2, 'is': 8, 'good': 3}, {'gfg': 1, 'for': 10, 'geeks': 9}, {'love': 3, 'gfg': 4}] # printing original list print("The original list is : " + str(test_list)) # initializing key key = 'good' # checking for key using in operator # keys() used to get keys # filter() + lambda used to perform filteration res = list(filter(lambda sub: key in list(sub.keys()), test_list)) # printing result print("The filtered Dictionaries : " + str(res))
Producción:
La lista original es: [{‘gfg’: 2, ‘is’: 8, ‘good’: 3}, {‘gfg’: 1, ‘for’: 10, ‘geeks’: 9}, {‘love’ : 3, ‘gfg’: 4}]
Los diccionarios filtrados: [{‘gfg’: 2, ‘is’: 8, ‘good’: 3}]
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