Python 3.9 aún está en desarrollo y su lanzamiento está programado para octubre de este año. El 26 de febrero, el equipo de desarrollo lanzó las versiones alfa 4. Una de las últimas funciones de Python 3.9 son los operadores de fusión y actualización.
Hay varias formas en que los diccionarios se pueden fusionar mediante el uso de varias funciones y constructores en Python. En este artículo, veremos todas las formas antiguas de realizar estas operaciones, así como el último operador lanzado por el equipo de desarrollo de Python, que seguramente será relevante para todos los programadores de Python.
- Usando el método de actualización():
El método Update() se usa para fusionar el segundo diccionario en el primer diccionario sin crear ningún diccionario nuevo y actualizar el valor del primer diccionario, mientras que el valor del segundo diccionario permanece inalterado. Además, la función no devuelve ningún valor.
Ejemplo:
# Python code to merge dict
# using update() method
dict1
=
{
'a'
:
10
,
'b'
:
5
,
'c'
:
3
}
dict2
=
{
'd'
:
6
,
'c'
:
4
,
'b'
:
8
}
# This return None
print
(
"value returned by update function :"
,
dict1.update(dict2))
# changes made in dict1
print
(
"dict1 :"
, dict1)
print
(
"dict2 :"
, dict2)
Producción:value returned by update function : None dict1 : {'a': 10, 'b': 8, 'c': 4, 'd': 6} dict2 : {'d': 6, 'c': 4, 'b': 8}
- Usando ** en Python
Hay un truco en Python donde podemos fusionar dos diccionarios usando una sola expresión y almacenarlo en un tercer diccionario. La expresión es **. Esto no afecta a los otros dos diccionarios. ** nos permite pasar múltiples argumentos a una función directamente usando un diccionario al expandir el contenido del diccionario en forma de colección de pares de valores clave. Para obtener más información, consulte **kwargs en Python . En este método, pasamos todos los elementos de todos los diccionarios a un nuevo diccionario de forma secuencial. Como los contenidos de los diccionarios se transmiten uno tras otro, todos los valores de las claves duplicadas se sobrescriben.
Ejemplo:
# Python code to merge dict
# using a single expression
dict1
=
{
'a'
:
10
,
'b'
:
5
,
'c'
:
3
}
dict2
=
{
'd'
:
6
,
'c'
:
4
,
'b'
:
8
}
dict3
=
{
*
*
dict1,
*
*
dict2}
print
(
"dict1 :"
, dict1)
print
(
"dict2 :"
, dict2)
print
(
"dict3 :"
, dict3)
Producción:dict1 : {'a': 10, 'b': 5, 'c': 3} dict2 : {'d': 6, 'c': 4, 'b': 8} dict3 : {'a': 10, 'b': 8, 'c': 4, 'd': 6}
- Usando | y |= operadores
La unión de diccionarios
(|)
devolverá un nuevo diccionario que consiste en el operando izquierdo fusionado con el operando derecho, cada uno de los cuales debe ser un diccionario. Si aparece una tecla en ambos operandos, se selecciona el último valor visto (es decir, el del operando de la derecha). La operación de actualización(|=)
devuelve el operando izquierdo fusionado con el operando derecho.Ejemplo:
# Python code to merge dict using
# (|) and (|=) operators
dict1
=
{
'a'
:
10
,
'b'
:
5
,
'c'
:
3
}
dict2
=
{
'd'
:
6
,
'c'
:
4
,
'b'
:
8
}
dict3
=
dict1 | dict2
print
(
"Merging dict2 to dict1 (i.e., dict1|dict2) : "
)
print
(dict3)
dict4
=
dict2 | dict1
print
(
"\nMerging dict1 to dict2 (i.e., dict2|dict1) : "
)
print
(dict4)
dict1 |
=
dict2
print
(
"\nMerging dict2 to dict1 and Updating dict1 : "
)
print
(
"dict1 : "
+
dict1)
print
(
"dict2 : "
+
dict2)
Producción:Merging dict2 to dict1 (i.e. dict1|dict2) : {'a': 10, 'd': 6, 'c': 4, 'b': 8} Merging dict1 to dict2 (i.e. dict2|dict1) : {'d': 6, 'a': 10, 'b': 5, 'c': 3} Merging dict2 to dict1 and Updating dict1 : dict1 : {'a': 10, 'd': 6, 'c': 4, 'b': 8} dict2 : {'d': 6, 'c': 4, 'b': 8}