Concatenar diccionarios en python
Una entrada cortita pero de mucha utilidad. Quiero compartir con ustedes como unir (concatenar) 2 diccionarios en python.
Existen varias formas en que los diccionarios se pueden fusionar mediante el uso de varias funciones y constructores en Python. En este artículo, discutiremos algunas formas de combinar diccionarios.
Usando el método update()
Para unir 2 diccionarios en python (un diccionario dentro del otro) vamos a utilizar el método update(), que es el equivalente a la función extend() que nos sirve para concatenar listas.
Vamos a poner un ejemplo:
Utilizaremos el shell interactivo de python:
»»» dicc_1 = {1: "a" , 2: "b" , 3: "c"}
»»» dicc_2 = {4: "d" , 5: "e" , 6: "f"}
»»» dicc_1
{1: "a", 2: "b", 3: "c"}
»»» dicc_2
{4: "d", 5: "e" , 6: "f"}
»»» dicc_1.update(dicc_2)
»»» dicc_2
{4: "d", 5: "e" , 6: "f"}
»»» dicc_1
{1: "a" , 2: "b" , 3: "c" , 4: "d", 5: "e" , 6: "f"}
»»»
Otro ejemplo con código:
# Python code to merge dict using update() method
def Merge(dict1, dict2):
return(dict2.update(dict1))
# Driver code
dict1 = {'a': 10, 'b': 8}
dict2 = {'d': 6, 'c': 4}
# This return None
print(Merge(dict1, dict2))
# changes made in dict2
print(dict2)
Salida:
None
{'c': 4, 'a': 10, 'b': 8, 'd': 6}
Usando ** en Python
Esto generalmente se considera un truco en Python, donde se usa una sola expresión para fusionar dos diccionarios y se almacena en un tercer diccionario. La única expresión es **. Esto no afecta a los otros dos diccionarios. ** implica que un argumento es un diccionario. Usando ** [doble asterísco] es un atajo que le permite pasar múltiples argumentos a una función directamente usando un diccionario. Para obtener más información, consulte **kwargs en Python. Usando esto, primero pasamos todos los elementos del primer diccionario al tercero y luego pasamos el segundo diccionario al tercero. Esto reemplazará las claves duplicadas del primer diccionario.
Ejemplo:
# Python code to merge dict using a single
# expression
def Merge(dict1, dict2):
res = {**dict1, **dict2}
return res
# Driver code
dict1 = {'a': 10, 'b': 8}
dict2 = {'d': 6, 'c': 4}
dict3 = Merge(dict1, dict2)
print(dict3)
Salida:
{'b': 8, 'a': 10, 'c': 4, 'd': 6}
Usando | en Python 3.9
En la última actualización de python ahora podemos usar “|” operador para fusionar dos diccionarios. Es un método muy conveniente para fusionar diccionarios.
Ejemplo:
# code
# Python code to merge dict using a single
# expression
def Merge(dict1, dict2):
res = dict1 | dict2
return res
# Driver code
dict1 = {'x': 10, 'y': 8}
dict2 = {'a': 6, 'b': 4}
dict3 = Merge(dict1, dict2)
print(dict3)
Salida:
{'x': 10, 'a': 6, 'b': 4, 'y': 8}
Cuales son tus trucos para concatenar diccionarios?
-
-
Gracias Zultano por tu comentario. Saludos
-
-
Yo quería saber, si quiero expresar que se cumplan dos condiciones para que me haga un cálculo, cómo lo pongo?
Por ejemplo, mientras la altura >400 y la presión <500
Existe alguna forma de unirlas en una misma línea?
lunazul91@gmail.comGracias
-
Hola diario. Claro que se puede. Te dejo un Ejemplo:
altura = 600
presion = 300if altura > 400 and presion < 500:
----print "La altura es mayor a 400 y la presion menor a 500"
else:
----print "No se cumple la condicion"Con and se tienen que cumplir las 2 condiciones. También se puede usar or para que se cumpla una u otra.
Saludos
-
-
Amigos, tengo esta duda y aun no la puedo resolver:
Declarando 2 diccionarios:
dicc_1 = {1: "a" , 2: ['b', 'z'] , 3: "c"}
dicc_2 = {4: "d" , 5: "e" , 2: ['f', 'x']}
Quisiera obtener este resultado:
dicc_3 = {1: "a" , 2: ['b', 'z', 'f', 'x'] , 3: "c", 4: "d" , 5: "e" }
Alguien tuviera alguna idea de como obtenerlo?
Muchas Gracias por el apoyo,
Saludos-
Buenas, lo podría hacer con:
dicc_1 = {1: "a" , 2: ['b', 'z'] , 3: "c"}
dicc_2 = {4: "d" , 5: "e" , 2: ['f', 'x']}
dicc_1[2].extend(dicc_2[2])
dicc_2[2]= dicc_1[2]
dicc_1.update(dicc_2)
-
Deja una respuesta
Muy buena info! gracias