Combinar claves en una lista de diccionarios en Python

A veces, mientras trabajamos con diccionarios de Python, podemos tener un problema en el que necesitamos realizar una combinación de diccionarios en la lista con claves similares. Este tipo de problema puede surgir en los dominios de optimización de datos. Analicemos una forma en que se puede realizar esta tarea.

Entrada : lista_prueba = [{‘a’: 6}, {‘b’: 2}, {‘a’: 9}, {‘b’: 7}]
Salida : [{‘b’: 2, ‘a’ : 6}, {‘b’: 7, ‘a’: 9}]

Entrada : lista_prueba = [{‘a’: 8}, {‘a’: 2}, {‘a’: 3}]
Salida : [{‘a’: 8}, {‘a’: 2}, {‘ a’: 3}]

Método: bucle + **operador
La combinación de las funciones anteriores se puede utilizar para resolver este problema. En esto, usamos la fuerza bruta para construir un nuevo diccionario y agregar claves solo si eso no se agregó en el actual. La tarea de fusionar diccionarios es desempaquetar los diccionarios iniciales usando el operador «**» y luego empaquetarlos nuevamente con un diccionario sin clave repetida y uno nuevo, usando la construcción habitual de inicialización del diccionario {}.

# Python3 code to demonstrate working of 
# Merge Similar Dictionaries in List
# Using loop + "**" operator
  
# initializing list
test_list = [{'gfg' : 1}, {'is' : 2}, {'best' : 3},
              {'gfg' : 5}, {'is' : 17}, {'best' : 14},
              {'gfg' : 7}, {'is' : 8}, {'best' : 10},]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Merge Similar Dictionaries in List
# Using loop + "**" operator
res = [{}]
for sub in test_list:
    if list(sub)[0] not in res[-1]:
        res[-1] = {**res[-1], **sub}
    else:
        res.append(sub)
  
# printing result 
print("The merged dictionaries : " + str(res)) 
Producción :

La lista original es: [{‘gfg’: 1}, {‘is’: 2}, {‘best’: 3}, {‘gfg’: 5}, {‘is’: 17}, {‘best’ : 14}, {‘gfg’: 7}, {‘is’: 8}, {‘best’: 10}]
Los diccionarios combinados: [{‘best’: 3, ‘is’: 2, ‘gfg’: 1}, {‘mejor’: 14, ‘es’: 17, ‘gfg’: 5}, {‘mejor’: 10, ‘es’: 8, ‘gfg’: 7}]

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 *