7 formas de fusionar dos diccionarios en Python

Aprenda 7 formas diferentes de fusionar dos diccionarios en Python. Este artículo cubre el método update(), el | operador, el operador **, comprensión de diccionario y más.

Los diccionarios son una de las estructuras de datos integradas en Python. Puede usarlos para almacenar datos en pares clave-valor.

Puede leer acerca de los diferentes métodos que puede usar para acceder, modificar, agregar y eliminar elementos en un diccionario aquí .

En este artículo, aprenderá cómo fusionar dos diccionarios usando lo siguiente:

  • el update()método
  • El operador doble asterisco/estrella ( **).
  • el chain()método
  • el ChainMap()método
  • El operador de combinación ( |).
  • El operador de actualización ( |=).

Cómo fusionar dos diccionarios en Python

En esta sección, discutiremos los diferentes métodos que puede usar para fusionar diccionarios en Python, junto con ejemplos de código.

Todos los ejemplos que verá en este artículo implicarán la fusión de dos diccionarios, pero puede fusionar tantos como desee.

Cómo fusionar dos diccionarios en Python usando el update()método

El update()método es un método integrado que puede usar para agregar datos a los diccionarios.

Considere el siguiente diccionario:

devBio = {
  "name": "Ihechikara",
  "age": 500,
  "language": "Python"
}

devBio.update({"role": "Technical Writer"})

print(devBio)
# {'name': 'Ihechikara', 'age': 500, 'language': 'Python', 'role': 'Technical Writer'}

En el código anterior, creamos un diccionario llamado devBiocon tres pares de clave y valor: {'name': 'Ihechikara', 'age': 50, 'language': 'Python'}.

Usando el update()método, agregamos otro par de clave y valor: devBio.update({"role": "Technical Writer"}).

De la misma manera, podemos fusionar dos diccionarios pasando otro diccionario como parámetro al update()método. Aquí hay un ejemplo:

devBio = {
  "name": "Ihechikara",
  "age": 500,
  "language": "Python"
}

tools = {
  "dev environment": "JupyterLab",
  "os": "Windows",
  "visualization": "Matplotlib"
}

devBio.update(tools)

print(devBio)
# {'name': 'Ihechikara', 'age': 500, 'language': 'Python', 'dev environment': 'JupyterLab', 'os': 'Windows', 'visualization': 'Matplotlib'}

En el código anterior, creamos dos diccionarios: devBioy tools.

Usando el update()método, fusionamos los pares de clave y valor del toolsdiccionario en el devBiodiccionario: devBio.update(tools).

Los diccionarios combinados se veían así:

{
    'name': 'Ihechikara', 
    'age': 500, 
    'language': 'Python', 
    'dev environment': 'JupyterLab', 
    'os': 'Windows', 
    'visualization': 'Matplotlib'
}

Cómo fusionar dos diccionarios en Python usando el operador de doble asterisco ( **)

Puede usar el operador de doble asterisco (también llamado doble estrella) ( **) para "desempaquetar" y fusionar los pares de clave y valor de dos o más diccionarios en una variable.

Aquí hay un ejemplo de código:

devBio = {
  "name": "Ihechikara",
  "age": 500,
  "language": "Python"
}

tools = {
  "dev environment": "JupyterLab",
  "os": "Windows",
  "visualization": "Matplotlib"
}

merged_bio = { **devBio, **tools}

print(merged_bio)
# {'name': 'Ihechikara', 'age': 500, 'language': 'Python', 'dev environment': 'JupyterLab', 'os': 'Windows', 'visualization': 'Matplotlib'}

En el código anterior, desempaquetamos los diccionarios devBioy toolsusando el operador de doble asterisco: { **devBio, **tools}.

Luego los almacenamos en una variable llamada merged_bio.

Cómo fusionar dos diccionarios en Python usando el chain()método

El chain()método toma múltiples objetos iterables como su parámetro. Combina y devuelve los objetos como un objeto iterable.

Tienes que importar el chain()método desde el itertoolsmódulo antes de usarlo:

from itertools import chain

devBio = {
  "name": "Ihechikara",
  "age": 500,
  "language": "Python"
}

tools = {
  "dev environment": "JupyterLab",
  "os": "Windows",
  "visualization": "Matplotlib"
}

merged_bio = dict(chain(devBio.items(), tools.items()))

print(merged_bio)
# {'name': 'Ihechikara', 'age': 500, 'language': 'Python', 'dev environment': 'JupyterLab', 'os': 'Windows', 'visualization': 'Matplotlib'}

En el código anterior, pasamos los diccionarios a fusionar como parámetros al chain()método: chain(devBio.items(), tools.items()).

Usamos el items()método para acceder a los pares clave y valor de cada diccionario.

Por último, anidamos el chain()método y sus parámetros en el dict()método: dict(chain(devBio.items(), tools.items())).

El dict()método se puede usar para crear un diccionario, así que lo usamos para convertir los objetos iterables devueltos (los pares de clave y valor) en un diccionario y los almacenamos en la merged_biovariable.

Cómo fusionar dos diccionarios en Python usando el ChainMap()método

El ChainMap()método funciona de la misma manera que el chain()método en lo que respecta a la fusión de diccionarios. La principal diferencia es que no necesita el items()método para acceder a los pares de clave y valor de los diccionarios.

Puede importar el ChainMap()método desde el collectionsmódulo.

Así es como puede usar el ChainMap()método para fusionar dos diccionarios:

from collections import ChainMap

devBio = {
  "name": "Ihechikara",
  "age": 500,
  "language": "Python"
}

tools = {
  "dev environment": "JupyterLab",
  "os": "Windows",
  "visualization": "Matplotlib"
}

merged_bio = dict(ChainMap(devBio, tools))

print(merged_bio)
# {'name': 'Ihechikara', 'age': 500, 'language': 'Python', 'dev environment': 'JupyterLab', 'os': 'Windows', 'visualization': 'Matplotlib'}

Puede consultar la explicación en la última sección para comprender la lógica en el código anterior.

Cómo combinar dos diccionarios en Python usando el operador de combinación ( |)

El operador de combinación ( |) se introdujo por primera vez en Python 3.9. Es una sintaxis más corta y simple que puede usar para fusionar diccionarios.

Aquí hay un ejemplo:

from collections import ChainMap

devBio = {
  "name": "Ihechikara",
  "age": 500,
  "language": "Python"
}

tools = {
  "dev environment": "JupyterLab",
  "os": "Windows",
  "visualization": "Matplotlib"
}

merged_bio = devBio | tools

print(merged_bio)
# {'name': 'Ihechikara', 'age': 500, 'language': 'Python', 'dev environment': 'JupyterLab', 'os': 'Windows', 'visualization': 'Matplotlib'}

Entonces, para fusionar el diccionario devBioy tools, colocamos el |operador entre ellos:   devBio | tools.

Cómo fusionar dos diccionarios en Python usando el operador de actualización ( |=)

El operador de actualización ( |=) es otro operador que se introdujo en Python 3.9.

Funciona igual que el update()método. Eso es:

from collections import ChainMap

devBio = {
  "name": "Ihechikara",
  "age": 500,
  "language": "Python"
}

tools = {
  "dev environment": "JupyterLab",
  "os": "Windows",
  "visualization": "Matplotlib"
}

devBio |= tools

print(devBio)
# {'name': 'Ihechikara', 'age': 50, 'language': 'Python', 'dev environment': 'JupyterLab', 'os': 'Windows', 'visualization': 'Matplotlib'}

En el código anterior, usamos el |=para fusionar los pares de clave y valor en el toolsdiccionario en el devBiodiccionario.

Resumen

En este artículo, hablamos sobre los diccionarios en Python. Puede usarlos para almacenar datos en pares clave-valor.

Vimos cómo fusionar dos diccionarios en Python usando:

  • el update()método
  • El operador doble asterisco/estrella ( **).
  • el chain()método
  • el ChainMap()método
  • El operador de combinación ( |).
  • El operador de actualización ( |=).

Cada método tenía su propia sección con ejemplos de código que mostraban cómo usarlos para fusionar diccionarios.

¡Feliz codificación!

Fuente: https://www.freecodecamp.org

#python

1.05 GEEK