¿Cómo puedo fusionar dos diccionarios en Python?

Python dictionaries which are used in data analytics frequently and by their nature are enclosed in {} and have key:value pairs, so the data in them can be retrieved easily.

Puede que haya que fusionar dos diccionarios, pero ¿cómo se consigue?

Lo bueno es que los diccionarios de Python son desordenados y mutables, lo que significa que lo que los compone puede ser cambiado.

Empecemos creando dos diccionarios

dict1 = {"A":"1", "B":"2", "C":"3"}
dict2 = {"D":"4", "E":"5", "F":"6"}
print("dictionary 1 is:", dict1)
print("dictionary 2 is:", dict2)
print(type(dict1))
print(type(dict2))

Its output is as follows:
dictionary 1 is: {'A': '1', 'B': '2', 'C': '3'}
dictionary 2 is: {'D': '4', 'E': '5', 'F': '6'}


El objetivo es reunir estos dos diccionarios en uno solo, ¿cómo se consigue?

Enfoque 1 - Utilizar el PEP 448

Este enfoque utiliza el PEP 448 que permite implementar el operador de desempaquetado * iterable y el operador de desempaquetado ** diccionario.

Como se puede ver a continuación, es una forma rápida y eficaz de fusionar rápidamente, sin afectar a la estructura de los dos diccionarios.

dict3 = {**dict1, **dict2}
print(dict3)
print(type(3))

With output:
{'A': '1', 'B': '2', 'C': '3', 'D': '4', 'E': '5', 'F': '6'}

Enfoque 2 - Actualizar cuando algunos valores no son necesarios.

Es posible que se enfrente a una situación en la que sólo quiera ciertos valores del segundo diccionario.

En lo que sigue hay claves comunes a ambos diccionarios, a saber, "A" y "B".

Lo que hace la actualización es mantener todos los valores del diccionario 1, y añadir cualquier par clave-valor que no sea A o B.

Este escenario podría darse cuando dict1 es el diccionario maestro y siempre es correcto, y sólo necesita que se añadan nuevos valores que no existan ya.

dict1 = {"A":"1", "B":"2", "C":"3"}
dict2 = {"A":"2", "E":"5", "B":"6"}
dict2.update((dict1))
print(dict2)
print(type(dict2))

Resulting in:
{'A': '1', 'E': '5', 'B': '2', 'C': '3'}

Enfoque 3 - Iterar sobre los diccionarios

En este escenario, están ocurriendo algunas cosas, que deben ser explicadas.

dict1.copy ===> Esto se hace para que tengas el original, ya que puede que se actualice si hay claves duplicadas.

El bucle entonces sólo va a través de los pares clave-valor de dict2, y añade los pares clave-valor a dict3, que era originalmente dict1.

dict1 = {"A":"1", "B":"2", "C":"3"}
dict2 = {"D":"4", "E":"5", "F":"6"}

dict3 = dict1.copy()

for key,value in dict2.items():
    dict3[key] = value
print(dict3)

Which gives you:
{'A': '1', 'B': '2', 'C': '3', 'D': '4', 'E': '5', 'F': '6'}

Resumiendo

En conclusión, en función de la forma en que desee abordar el tema, hemos esbozado algunas opciones.

Probablemente lo más importante que surgió de esto, es que los diccionarios pueden ser cambiados, como resultado al aplicar algunos de los

técnicas anteriores, antes de proceder asegúrese de comprobar si desea mantener los valores originales.