Python dict para búsquedas rápidas por clave y valores por defecto
Un dict de Python mapea claves hasheables a valores para búsquedas rápidas por clave.
Úsalo cuando cada elemento tiene un identificador único y necesitas acceso rápido por esa clave.
dict.get te permite dar un valor por defecto para claves faltantes y mantener las búsquedas seguras.
Esto hace que los dicts encajen muy bien en tareas basadas en claves.
Ejemplo De Python Dict Para Búsqueda Por Clave
Salida:
La salida aparecerá aquí...
Salida:
usuario_2: Noah
usuario_3: desconocido
Cómo Funciona Este Ejemplo
- El literal dict crea un mapeo de IDs de usuario a nombres; las claves deben ser hasheables, así que las cadenas son una opción segura.
name_by_id["usuario_2"]devuelve el valor de una clave existente, pero esta forma lanzaKeyErrorcuando falta la clave.getdevuelve el valor por defecto cuando la clave está ausente, lo que evita la excepción para claves opcionales.
Errores Comunes
Error: Usar d[key] cuando la clave es opcional.
Mal:
status = status_by_order[order_id]
Bien:
status = status_by_order.get(order_id, "no encontrado")
Por qué pasa: d[key] lanza KeyError cuando falta la clave, mientras que get devuelve un valor por defecto.
Error: Usar una clave no hasheable como una lista.
Mal:
bad_key = ["A101"]
status_by_order[bad_key] = "enviado"
Bien:
good_key = ("A101",)
status_by_order[good_key] = "enviado"
Por qué pasa: las claves de dict deben ser hasheables, y las listas no lo son; las tuplas funcionan porque son hasheables cuando sus contenidos lo son.
Error: Suponer que 1, 1.0 y True son claves distintas.
Mal:
d = {1: "uno", True: "booleano"}
Bien:
d = {1: "uno", 2: "dos"}
Por qué pasa: las claves que se comparan como iguales apuntan a la misma entrada, así que las asignaciones posteriores sobrescriben las anteriores.
Python dict vs list: cuál usar
| Usa dict cuando… | Usa list cuando… |
|---|---|
| Necesitas mapear una clave a un valor y buscarlo por esa clave. | Solo necesitas una secuencia ordenada de elementos o acceso posicional. |
| Las claves son identificadores estables como IDs, códigos o nombres. | La posición de cada elemento es la forma principal de acceder a él. |
Regla general: usa un dict para búsquedas por clave y una list para acceso ordenado por índice.
Consideraciones De Rendimiento
La implementación de dict en Python está muy optimizada y rinde muy bien como mapeo de propósito general, por eso es la opción por defecto para búsquedas repetidas por clave.
Si solo necesitas acceso ordenado por índice, una list puede ser más simple porque los dicts se indexan por claves y no por posiciones.
Al iterar vistas de dict, evita agregar o eliminar entradas durante el bucle; mutar mientras iteras puede lanzar RuntimeError, así que copia las claves primero cuando necesites cambiarlas.
Más Ejemplos
Combinar valores por defecto con sobrescrituras (Python 3.9+):
defaults = {"reintentos": 2, "tiempo_espera": 5}
overrides = {"tiempo_espera": 10}
config = defaults | overrides
print(config)
| crea un nuevo dict y, cuando las claves se solapan, gana el dict de la derecha, lo que es útil para configuraciones por capas.
Construir un dict desde pares clave/valor:
language_labels = [("en", "Hello"), ("es", "Hola")]
labels_by_locale = dict(language_labels)
print(labels_by_locale)
dict() acepta un iterable de pares clave/valor, lo cual es útil cuando los datos llegan como tuplas.
Cuándo usar Python dict
- Necesitas obtener o actualizar valores por una clave estable, como IDs, códigos o nombres.
- Quieres un orden de iteración predecible que coincida con el orden de inserción.
- Necesitas valores por defecto seguros para claves faltantes con
geto comprobaciones explícitas. - Necesitas combinar diccionarios con reglas claras de precedencia.
- No uses un dict si solo necesitas acceso posicional a elementos ordenados; una list es más simple en ese caso.