Fusión y actualización de operadores de diccionario en Python 3.9

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}
    

Publicación traducida automáticamente

Artículo escrito por 09amit y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *