Imagina guardar una persona como ["Ana", 31, "Valencia"]. Funciona, pero necesitas recordar que la posición 0 es el nombre, la 1 es la edad y la 2 es la ciudad.
Un diccionario sustituye esas posiciones por claves con significado.
Decidir si una clave debe existir obligatoriamente o puede faltar de forma normal.
Una clave responde «qué dato es este»
persona = {
"nombre": "Ana",
"edad": 31,
"ciudad": "Valencia"
}
print(persona["nombre"])
print(persona["edad"])"nombre", "edad" y "ciudad" son claves. Cada una apunta a un valor. Ya no necesitas saber en qué posición está la edad: preguntas por ella directamente.
La misma sintaxis sirve para actualizar y para añadir
producto = {"nombre": "Taza", "precio": 8.5}
producto["precio"] = 9.5
producto["stock"] = 12
print(producto)Si la clave ya existe, la asignación actualiza su valor. Si no existe, se añade una nueva pareja clave-valor.
Lectura útil: producto["precio"] significa «el valor del producto identificado por la clave precio».
Clave obligatoria y clave opcional no se tratan igual
Con persona["nombre"] estás diciendo que esperas encontrar esa clave. Si no existe, Python lanza KeyError. Eso puede ser útil porque revela que tus datos no tienen la forma esperada.
Cuando una clave realmente puede faltar, get() permite dar un valor alternativo:
usuario = {"nombre": "Leo"}
print(usuario.get("telefono", "Sin teléfono"))No uses get() para ocultar todos los errores. Úsalo cuando la ausencia de la clave sea una situación normal.
¿La clave es obligatoria o puede faltar?
pedido["id"]: si falta, los datos están incompletos y KeyError te ayuda a descubrirlo.
perfil.get("telefono", "Sin teléfono"): la ausencia es una situación prevista.
Error frecuente: producto[nombre] busca el valor de una variable llamada nombre. Si la clave es texto, escribe producto["nombre"].
Completa la ficha: actualiza una clave obligatoria y añade otra. Después usa acceso directo para el nombre y get() solo para el dato opcional.
Teclado · 24.9 € · 7 unidades
La salida aparecerá aquí.
Necesito una pista
- Ambas operaciones tienen la forma
producto["clave"] = valor.
Ver una solución razonada
producto = {"nombre": "Teclado", "precio": 0}
producto["precio"] = 24.9
producto["stock"] = 7
print(f"{producto['nombre']} · {producto['precio']} € · {producto.get('stock', 0)} unidades")El error que una lista puede esconder y un diccionario puede aclarar
Si ves código como registro[3] y tienes que buscar qué significa ese 3, quizá esos datos necesitan claves. Un diccionario no es «mejor» que una lista; simplemente es más expresivo cuando cada valor tiene un nombre propio.
Hazte esta pregunta antes de elegir estructura
¿Lo importante es la posición de los elementos o el nombre de cada dato? Para una secuencia de canciones, una lista suele encajar. Para los datos de una canción —título, artista y duración— un diccionario suele explicar mejor la intención.
puedes crear un diccionario pequeño, recuperar un valor por su clave y distinguir una clave obligatoria de una opcional.