Ampliar el diccionario de Python

Neema Muganga 30 enero 2023
  1. Usando el método update() para extender un diccionario en Python
  2. Uso del operador ** para ampliar un diccionario de Python
  3. Uso de la comprensión de diccionario para ampliar un diccionario de Python
  4. Uso de collections.Chainmap para ampliar un diccionario de Python
Ampliar el diccionario de Python

Este artículo le mostrará al usuario cómo extender un diccionario de Python con otro diccionario. Un diccionario es un contenedor de datos que se puede cambiar (es mutable) y almacena estos datos en forma de pares clave-valor, ejemplo {clave: 'valor'}.

Puede ampliar un diccionario con otro elemento mediante concatenación. Significa que todos los pares clave-valor de un diccionario se agregarán al otro.

Usando el método update() para extender un diccionario en Python

El método update() es una de las formas que usa Python para implementar la concatenación de diccionarios. Se hace agregando elementos de par clave-valor de otro diccionario al final del diccionario actual.

Este método es especialmente útil cuando se amplía un diccionario que tiene pares clave-valor diferentes de otro diccionario. De lo contrario, el uso de update() sobrescribirá los valores existentes en el primer diccionario con los elementos del segundo diccionario.

En términos más simples, los valores del segundo diccionario definido sobrescriben a los del primero debido a la superposición.

first_dict = {"name": "Yolanda", "major": "Bsc Comp Science", "age": 23}
second_dict = {"name": "Beatrice", "major": "Bsc Comp Science", "age": 43}
first_dict.update(second_dict)
print(first_dict)

Producción :

{'name': 'Beatrice', 'major': 'Bsc Comp Science', 'age': 43}

Los diccionarios anteriores tienen valores de clave idénticos, que son name. El uso de update() para concatenar estos almacenes de datos da como resultado que el valor de la clave name para el first_dict sea sobreescrito por el de second_dict. Por lo tanto, da como resultado un único diccionario como se muestra en la salida.

Sin embargo, al extender un diccionario con valores que aún no están definidos, update() muestra un solo diccionario con todos los pares clave-valor de ambos diccionarios definidos.

Ejemplo:

dict_one = {'u':2, 'v':4, 'w':7}
dict_two = {'x':5, 'y':6, 'z': 8}
dict_one.update(dict_two)
print(dict_one)

Producción :

{'u': 2, 'v': 4, 'w': 7, 'x': 5, 'y': 6, 'z': 8}

Uso del operador ** para ampliar un diccionario de Python

El uso del operador asterik en una declaración de una línea se vería así:

dict(iterable, **kwargs)

iterable es el primer diccionario definido y el segundo parámetro es el segundo diccionario (parámetro de palabras clave).

Ejemplo

y = {"a": 5, "b": 6}
z = {"c": 7, "d": 9}

x = dict(y, **z)
print(x)

Producción :

{'a': 5, 'b': 6, 'c': 7, 'd': 9}

Si hay una superposición de par clave-valor en los diccionarios definidos, los elementos del segundo diccionario se superponen con los del primer diccionario de la misma forma que vimos en update().

Ejemplo:

first_dict = {"a": 2, "b": 3, "c": 5}
second_dict = {"c": 4, "e": 6, "f": 7}
dictt = dict(first_dict, **second_dict)
print(dictt)

Producción :

{'a': 2, 'b': 3, 'c': 4, 'e': 6, 'f': 7}

También es importante tener en cuenta que los nombres de los argumentos y las claves en los elementos del **dictionary deben ser del tipo de datos de cadena. De lo contrario, se mostrará una excepción de Typerror.

Ejemplo:

first_dict = {"a": 2, "b": 3, "c": 5}
second_dict = {"c": 4, "e": 6, 7: 7}
dictt = dict(first_dict, **second_dict)
print(dictt)

Producción :

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: keywords must be strings

Uso de la comprensión de diccionario para ampliar un diccionario de Python

Este método de transformación transforma un diccionario de Python en otro al incluir de forma condicional elementos de un diccionario original en uno nuevo. Funciona de manera similar al uso de asteriscos como el anterior.

first_dict = {"a": 2, "b": 3, "c": 5}
second_dict = {"c": 4, "e": 6, "f": 7}
the_dictionary = {**first_dict, **second_dict}
print(the_dictionary)

Producción :

{'a': 2, 'b': 3, 'c': 4, 'e': 6, 'f': 7}

Uso de collections.Chainmap para ampliar un diccionario de Python

Python proporciona la clase ChainMap que agrupa los diccionarios de servicio para formar una vista única que se puede actualizar cuando sea necesario. Lo importamos desde el módulo collections en Python.

Utilice este método para encadenar elementos más rápidamente. Esto se debe a que chainmap solo usa las vistas de los diccionarios; por lo tanto, no implica la copia de datos.

Además, sobrescribe las teclas en cualquier momento; por lo tanto, a partir de la salida, se podría saber cuál es la fuente de datos.

Implementarlo así:

from collections import ChainMap

first_dict = {"a": 2, "b": 3, "c": 5}
second_dict = {"c": 4, "e": 6, "f": 7}
a_dictionary = ChainMap(first_dict, second_dict)