4

¿Es posible "sumar" diccionarios en Python?

El operador “+” puede ser utilizado con las Listas en Python:

a = [1, 2, 3]
b = [4, 5, 6]

c = a + b

Al sumar dos listas, obtenemos en “c” una sola lista más grande, la cual contiene todos los elementos de las listas “a” y “b”.

¿Qué pasa con los diccionarios?
Bueno, si intentamos aplicar el operador “+” a dos diccionarios, con la intensión de obtener un solo diccionario que contenga los elementos de ambos diccionarios obtendremos una Excepción

a = {1: 'a', 2: 'b'}
b = {3: 'c', 4: 'd'}

c = a + b  # TypeError: unsupported operand type(s) for +: 'dict' and 'dict'

Método update
Para poder “sumar” dos diccionarios tenemos a nuestra disposición el método update:

a = {1: 'a', 2: 'b'}
b = {3: 'c', 4: 'd'}

a.update(b)

Haciendo lo anterior, ahora el diccionario “a” contiene sus elementos originales más los elementos que provienen del diccionario b. “El diccionario fue actualizado”.

Unpacking
Otra forma de unir dos diccionarios en uno solo es usando el “unpacking” con el operador “*”:

a = {1: 'a', 2: 'b'}
b = {3: 'c', 4: 'd'}

c = {**a, **b}

Para crear el diccionario “c” que contendrá los elementos de los diccionarios “a” y “b”, desempaquetamos los elementos de “a” y los elementos de “b”. Como resultado de la operación, “c” contiene los elementos de “a” y de “b”.

NOTA: para profundizar o entender más acerca de esta forma de utilizar el operador “*”, puede ser buscado en Google como “Python Unpacking”; el concepto de unpacking puede ser aplicado a Listas, Tuplas, Diccionarios.

Unión de diccionarios
Otra manera de unir dos diccionarios fue introducida en PYTHON 3.9, en versiones anteriores esta forma no está disponible, utilizando el siguiente operador “|” (pipe):

a = {1: 'a', 2: 'b'}
b = {3: 'c', 4: 'd'}

c = a | b

Así de esta manera, se pueden unir dos diccionarios de una manera limpia y elegante a partir de Python 3.9. El diccionario c, contiene los elementos de “a” y de “b”. Utilizar el ( | ) pipe, es equivalente a lo visto en unpacking.

El nuevo “método” update.

a = {1: 'a', 2: 'b'}
b = {3: 'c', 4: 'd'}

a |= b

Utilizando esa forma (pipe y un signo de igual) estamos actualizando el diccionario “a”. El resultado es el mismo que hacer: “a.update(b)”. Al igual que el punto anterior, esto solo está disponible desde PYTHON 3.9

Resumen:
Las dos operaciones sobre diccionarios mostradas fueron:

  1. Actualizar los elementos de un diccionario con los elementos de otro diccionario. Utilizamos el método “update”, o a partir de python3.9 usamos el operador pipe más un signo de igual |=
  2. Crear un nuevo diccionario “c” a partir de dos existentes. Usando el concepto de unpacking en python, o a partir de python3.9 usando el operador pipe |

Espero pueda servirles este aporte, cualquier comentario o sugerencia es bien recibida.
Saludos.

Escribe tu comentario
+ 2