Dada la lista de 2 diccionarios, la tarea es escribir un programa de Python para realizar una combinación condicional, es decir, agregar claves, en función de la similitud de una clave particular en un diccionario de índice similar.
Ejemplo:
Entrada: test_list1 = [{«gfg»: 1, «es»: 3, «mejor»: 2}, {«gfg»: 1, «mejor»: 6}, {«todos»: 7, «mejor»: 10} ],
test_list2 = [{“bueno”: 4, “mejor”: 2}, {“geeks”: 2, “mejor”: 3 }, {“CS”: 2, “mejor”: 10 } ], test_key = “mejor ”
Salida: [{‘gfg’: 1, ‘es’: 3, ‘mejor’: 2, ‘bueno’: 4}, {‘gfg’: 1, ‘mejor’: 6}, {‘todos’: 7, ‘mejor’: 10, ‘CS’: 2}]
Explicación: el mejor tiene 2 en ambos diccionarios del índice 0, por lo tanto, en el índice 0, los diccionarios se fusionan.
Entrada: test_list1 = [{«gfg»: 1, «es»: 3, «mejor»: 3}, {«gfg»: 1, «mejor»: 6}, {«todos»: 7, «mejor»: 10} ],
test_list2 = [{“bueno”: 4, “mejor”: 2}, {“geeks”: 2, “mejor”: 3 }, {“CS”: 2, “mejor”: 10 } ], test_key = “mejor ”
Salida: [{‘gfg’: 1, ‘es’: 3, ‘mejor’: 3}, {‘gfg’: 1, ‘mejor’: 6}, {‘todos’: 7, ‘mejor’: 10, ‘CS’: 2}]
Explicación: el mejor tiene 10 en ambos diccionarios del segundo índice, por lo tanto, en el índice 2, los diccionarios se fusionan.
Método: Usando next() + update()
En esto, usamos la expresión del generador para verificar si la clave del diccionario coincide con la clave del diccionario de índice similar, si es así, entonces todas las claves correspondientes se fusionan usando update().
Python3
# Python3 code to demonstrate working of # Conditional Join Dictionary List # Using update() + next() # initializing lists test_list1 = [{"gfg": 1, "is": 3, "best": 2}, { "gfg": 1, "best": 6}, {"all": 7, "best": 10}] test_list2 = [{"good": 4, "best": 2}, { "geeks": 2, "best": 3}, {"CS": 2, "best": 10}] # printing original list print("The original list 1 is : " + str(test_list1)) print("The original list 2 is : " + str(test_list2)) # initializing test key test_key = "best" for sub1 in test_list1: # checking for matching key temp = next( (itm for itm in test_list2 if sub1[test_key] == itm[test_key]), None) if(temp): # performing update sub1.update(temp) # printing result print("Joined result : " + str(test_list1))
Producción:
La lista original 1 es: [{‘gfg’: 1, ‘is’: 3, ‘best’: 2}, {‘gfg’: 1, ‘best’: 6}, {‘all’: 7, ‘best ‘: 10}]
La lista original 2 es: [{‘bueno’: 4, ‘mejor’: 2}, {‘geeks’: 2, ‘mejor’: 3}, {‘CS’: 2, ‘mejor’: 10}]
Resultado combinado: [{‘gfg’: 1, ‘is’: 3, ‘best’: 2, ‘good’: 4}, {‘gfg’: 1, ‘best’: 6}, {‘all’: 7 ,
‘mejor’: 10, ‘CS’: 2}]
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