Ampliar el diccionario de Python
-
Usando el método
update()
para extender un diccionario en Python - Uso del operador ** para ampliar un diccionario de Python
- Uso de la comprensión de diccionario para ampliar un diccionario de Python
-
Uso de
collections.Chainmap
para ampliar un 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)