Diccionarios en Python: métodos y ejemplos

Los diccionarios en Python almacenan pares de clave y valor. Son una estructura fundamental para representar registros, configuraciones, respuestas JSON, contadores y relaciones que deben consultarse por un identificador. Mantienen el orden de inserción y exigen que cada clave sea única y hashable.
Crear y consultar un diccionario
Puedes usar llaves o el constructor dict:
cliente = {
"id": 1042,
"nombre": "Ana",
"activo": True,
}
print(cliente["nombre"])
El acceso con corchetes lanza KeyError si la clave no existe. Cuando una ausencia es válida, get permite indicar un valor predeterminado:
ciudad = cliente.get("ciudad", "sin especificar")
Esta diferencia evita capturar excepciones para casos esperables, pero también puede ocultar un error tipográfico. Decide si la clave es obligatoria antes de elegir el método.
Añadir, actualizar y eliminar elementos
Asignar sobre una clave nueva la crea; asignar sobre una existente reemplaza su valor:
cliente["ciudad"] = "Valencia"
cliente["activo"] = False
update integra varios pares. pop elimina una clave y devuelve su valor; popitem elimina el último par insertado. del es apropiado cuando solo quieres borrar y consideras un error que la clave no exista. clear vacía el diccionario completo.
Recorrer claves y valores
Un bucle directo recorre claves. Para trabajar con ambos componentes utiliza items:
for campo, valor in cliente.items():
print(campo, valor)
keys ofrece una vista de claves y values una vista de valores. Estas vistas se actualizan cuando cambia el diccionario y permiten comprobaciones de pertenencia eficientes.
Métodos que resuelven casos frecuentes
setdefault devuelve el valor existente o crea la clave con un valor inicial. Es práctico para agrupar:
por_ciudad = {}
for persona in personas:
por_ciudad.setdefault(persona["ciudad"], []).append(persona)
Para agrupaciones intensivas, collections.defaultdict puede expresar mejor la intención. fromkeys crea varias claves con un mismo valor inicial, pero no debes reutilizar un objeto mutable como lista porque todas las claves compartirían la misma instancia.
Comprensiones de diccionario
Una comprensión crea un diccionario mediante una expresión compacta:
cuadrados = {numero: numero ** 2 for numero in range(1, 6)}
activos = {
usuario["id"]: usuario["nombre"]
for usuario in usuarios
if usuario["activo"]
}
Es ideal para indexar registros por ID o transformar pares. Si incorpora múltiples condiciones y efectos secundarios, un bucle explícito será más sencillo de depurar.
Combinar diccionarios
En versiones modernas de Python, el operador de unión combina dos diccionarios y conserva el valor del operando derecho cuando una clave se repite:
base = {"tema": "oscuro", "idioma": "es"}
usuario = {"idioma": "ca"}
configuracion = base | usuario
update modifica el diccionario original; el operador crea otro. Esta distinción importa al compartir configuraciones entre componentes.
Diccionarios anidados y copias
Las respuestas de una API suelen contener diccionarios y listas anidados. Encadena accesos solo cuando la estructura está garantizada. Para datos externos, valida tipos y claves o utiliza modelos de datos.
copy realiza una copia superficial: los objetos anidados siguen compartidos. Si necesitas independencia completa, evalúa copy.deepcopy, aunque puede ser costoso y no siempre representa la semántica deseada.
Rendimiento y diseño de claves
La búsqueda, inserción y eliminación suelen ser rápidas. Las claves pueden ser cadenas, números o tuplas inmutables; una lista no sirve como clave. No confíes en el orden para expresar prioridades de negocio si esa regla no está documentada.
Un buen diccionario usa claves consistentes, evita mezclar significados y no se convierte en un contenedor ilimitado. Cuando el registro tiene un esquema estable y comportamiento propio, una dataclass puede ofrecer validación, autocompletado y tipos más claros.
Buenas prácticas
Normaliza las claves al entrar datos, distingue entre ausencia y valor None, y no modifiques el tamaño del diccionario mientras lo recorres. En interfaces públicas, documenta las claves obligatorias. Para JSON, recuerda que las claves del objeto serán cadenas y que fechas u objetos personalizados necesitan serialización explícita.
Continúa aprendiendo
Amplía este tema con nuestras guías sobre funciones lambda en Python, comprensión de listas en Python, NumPy en Python.
Fuentes oficiales
Preguntas frecuentes
¿Qué diferencia hay entre dict.get y los corchetes?
Los corchetes lanzan KeyError si falta la clave; get devuelve None o el valor predeterminado indicado.
¿Los diccionarios de Python mantienen el orden?
Sí, mantienen el orden de inserción en las versiones actuales del lenguaje, aunque eso no sustituye una regla de ordenación explícita.
¿Qué tipos pueden ser claves?
Objetos hashables e inmutables en su identidad, como cadenas, números y tuplas formadas por elementos hashables.
¿Cómo se combinan dos diccionarios?
Puedes utilizar el operador de unión para crear uno nuevo o update para modificar el original. Las claves repetidas toman el valor más reciente.
¿Qué hace setdefault?
Devuelve el valor de una clave existente o la crea con un valor predeterminado, algo útil para agrupaciones.
¿Cuándo usar una dataclass en lugar de dict?
Cuando los datos tienen un esquema estable, tipos definidos y comportamiento propio que conviene hacer explícito.

Deja una respuesta