A veces, mientras trabajamos con diccionarios de Python, podemos tener un problema en el que necesitamos extraer una clave particular sobre la base de otras claves de registro coincidentes cuando hay una coincidencia exacta. Analicemos ciertas formas en que se puede realizar esta tarea.
Método n.º 1: uso de bucle + condiciones
Esta es una de las formas en que se puede realizar esta tarea. En esto, iteramos las claves del diccionario y verificamos los valores coincidentes de cada clave.
# Python3 code to demonstrate working of # Extract target key from other key values # Using loop + condition # initializing list test_list = [{ 'name' : 'Manjeet', 'English' : 14, 'Maths' : 2}, { 'name' : 'Akshat', 'English' : 7, 'Maths' : 13}, { 'name' : 'Akash', 'English' : 1, 'Maths' : 17}, { 'name' : 'Nikhil', 'English' : 10, 'Maths' : 18}] # printing original list print("The original list is : " + str(test_list)) # initializing filter items filt_key = {'English' : 7, 'Maths' : 13} # Extract target key from other key values # Using loop + condition res = [] for sub in test_list: if sub["English"] == filt_key["English"] and sub["Maths"] == filt_key["Maths"]: res.append(sub['name']) # printing result print("The filtered result : " + str(res))
La lista original es: [{‘name’: ‘Manjeet’, ‘English’: 14, ‘Maths’: 2}, {‘name’: ‘Akshat’, ‘English’: 7, ‘Maths’: 13}, {‘name’: ‘Akash’, ‘English’: 1, ‘Maths’: 17}, {‘name’: ‘Nikhil’, ‘English’: 10, ‘Maths’: 18}] El resultado filtrado: [
‘ Akshat’]
Método n.º 2: Uso de bucle + condiciones (para claves múltiples/desconocidas)
Esto realiza la tarea de manera similar a como lo hace el método anterior. La ventaja de usar este método es que no es necesario alimentar todas las claves manualmente en condiciones.
# Python3 code to demonstrate working of # Extract target key from other key values # Using loop + conditions ( for multiple / unknown keys ) def hlper_func(test_keys, filt_key): for key in test_keys.keys(): if key in filt_key: if test_keys[key] != int(filt_key[key]): return False return True # initializing list test_list = [{ 'name' : 'Manjeet', 'English' : 14, 'Maths' : 2}, { 'name' : 'Akshat', 'English' : 7, 'Maths' : 13}, { 'name' : 'Akash', 'English' : 1, 'Maths' : 17}, { 'name' : 'Nikhil', 'English' : 10, 'Maths' : 18}] # printing original list print("The original list is : " + str(test_list)) # initializing filter items filt_key = {'English' : 7, 'Maths' : 13} # Extract target key from other key values # Using loop + conditions ( for multiple / unknown keys ) res = [] for sub in test_list: if hlper_func(sub, filt_key): res.append(sub['name']) # printing result print("The filtered result : " + str(res))
La lista original es: [{‘name’: ‘Manjeet’, ‘English’: 14, ‘Maths’: 2}, {‘name’: ‘Akshat’, ‘English’: 7, ‘Maths’: 13}, {‘name’: ‘Akash’, ‘English’: 1, ‘Maths’: 17}, {‘name’: ‘Nikhil’, ‘English’: 10, ‘Maths’: 18}] El resultado filtrado: [
‘ Akshat’]
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