Python – Lista de diccionarios de unión condicional

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *