Agregar elementos a un diccionario de Python
Aprende cuatro formas de agregar elementos a un diccionario de Python: notación de corchetes, update(), setdefault() y el operador de fusión de Python 3.9+, con ejemplos claros.
Los diccionarios de Python son colecciones mutables y ordenadas (desde Python 3.7) de pares clave-valor. Debido a que son mutables, puedes agregar nuevas entradas en cualquier momento después de su creación. Este capítulo cubre todas las técnicas estándar para agregar elementos a un diccionario, incluidos los operadores de fusión de Python 3.9+, con notas prácticas sobre cuándo es mejor usar cada enfoque.
¿Qué es un diccionario de Python?
Un diccionario almacena datos como pares clave-valor dentro de llaves {}. Las claves deben ser únicas e inmutables (strings, números o tuplas); los valores pueden ser cualquier objeto de Python.
# A simple dictionary
person = {'name': 'Alice', 'age': 30, 'city': 'New York'}Las claves son únicas — si asignas un valor a una clave que ya existe, el valor anterior se sobreescribe, no se duplica. Ten en cuenta este comportamiento mientras trabajas con los métodos a continuación.
Formas de agregar elementos a un diccionario
Usando la notación de corchetes
La forma más sencilla de agregar un nuevo par clave-valor es la asignación directa con corchetes:
Salida:
{'name': 'John', 'age': 25, 'city': 'New York', 'gender': 'Male'}Si la clave ya existe, el valor se reemplaza en lugar de agregarse:
my_dict = {'name': 'John', 'age': 25}
my_dict['age'] = 30 # overwrites 25
print(my_dict)
# {'name': 'John', 'age': 30}Usa la asignación con corchetes cuando estés agregando o actualizando una sola clave cuyo nombre conoces en el momento de escribir el código.
Usando el método update()
dict.update() fusiona uno o más pares clave-valor en el diccionario en una sola llamada. Puedes pasar otro diccionario, un iterable de pares (key, value), o argumentos de palabras clave.
Fusionar un segundo diccionario:
Salida:
{'name': 'John', 'age': 25, 'city': 'New York', 'gender': 'Male', 'occupation': 'Software Engineer'}Usar argumentos de palabras clave para agregar múltiples claves a la vez:
my_dict = {'name': 'John', 'age': 25}
my_dict.update(city='New York', gender='Male')
print(my_dict)
# {'name': 'John', 'age': 25, 'city': 'New York', 'gender': 'Male'}Al igual que la asignación con corchetes, update() sobreescribe las claves existentes. Úsalo cuando necesites agregar o actualizar múltiples entradas a la vez.
Usando el método setdefault()
dict.setdefault(key, default) agrega una clave solo si aún no está presente. Si la clave existe, devuelve el valor existente sin cambiar nada.
Salida:
{'name': 'John', 'age': 25, 'city': 'New York', 'gender': 'Male'}Cuando la clave ya existe, setdefault() la deja intacta y devuelve el valor actual:
my_dict = {'name': 'John', 'age': 25}
result = my_dict.setdefault('name', 'Alice')
print(result) # John — not overwritten
print(my_dict) # {'name': 'John', 'age': 25}setdefault() es la herramienta adecuada cuando deseas inicializar una clave con un valor predeterminado sin sobreescribir accidentalmente datos que ya existen. Un patrón común es inicializar una clave faltante con una lista vacía antes de agregar elementos:
groups = {}
for item in ['apple', 'banana', 'avocado']:
letter = item[0]
groups.setdefault(letter, []).append(item)
print(groups)
# {'a': ['apple', 'avocado'], 'b': ['banana']}Usando los operadores de fusión (Python 3.9+)
Python 3.9 añadió dos operadores que proporcionan una sintaxis concisa para combinar diccionarios.
| — crear un nuevo diccionario fusionado (no destructivo):
d1 = {'a': 1, 'b': 2}
d2 = {'c': 3, 'd': 4}
d3 = d1 | d2 # d1 and d2 are unchanged
print(d3)
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}|= — actualizar en el lugar (equivalente a update() pero más corto):
d1 = {'a': 1, 'b': 2}
d2 = {'c': 3, 'd': 4}
d1 |= d2 # d1 is modified
print(d1)
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}Cuando las claves se superponen, el operando del lado derecho prevalece — la misma precedencia que update(). Estos operadores requieren Python 3.9 o posterior; usa update() para mayor compatibilidad.
Usando dict.fromkeys() para pre-poblar un diccionario
dict.fromkeys(keys, default) es un método de clase que crea un diccionario completamente nuevo a partir de un iterable de claves y un valor predeterminado opcional. No agrega elementos a un diccionario existente.
# Create a dictionary with a shared default value
template = dict.fromkeys(['name', 'age', 'city'], 'Unknown')
print(template)
# {'name': 'Unknown', 'age': 'Unknown', 'city': 'Unknown'}
# You can then populate it with real values
template['name'] = 'Alice'
template['age'] = 28
print(template)
# {'name': 'Alice', 'age': 28, 'city': 'Unknown'}fromkeys() es útil para estructurar un diccionario cuando conoces las claves de antemano pero completarás los valores más tarde.
Elegir el método adecuado
| Objetivo | Método |
|---|---|
| Agregar o sobreescribir una sola clave | dict[key] = value |
| Agregar o sobreescribir múltiples claves | dict.update(...) o dict |= other (3.9+) |
| Agregar una clave solo si está ausente | dict.setdefault(key, default) |
| Fusionar dos diccionarios en un tercero | new = a | b (3.9+) |
| Crear un nuevo diccionario a partir de una lista de claves | dict.fromkeys(keys, default) |
Capítulos relacionados
- Diccionarios de Python — descripción general de la creación y sintaxis de diccionarios
- Acceder a elementos — leer valores por clave,
get()e iteración - Cambiar elementos — actualizar valores existentes de forma segura
- Eliminar elementos —
pop(),popitem(),delyclear() - Métodos de diccionario — referencia completa de todos los métodos integrados de dict
- Iterar diccionarios — iterar sobre claves, valores y elementos