Diccionarios: claves, métodos y acceso seguro

Actualizado el: 20/08/2026
Tempo de leitura: 5 minutos
Dicionário com o logo do Python em uma página e o texto 'Dicionário Python'

Los diccionarios en Python almacenan información como pares de clave y valor. Son una de las estructuras más útiles del lenguaje porque permiten acceder a un dato mediante un nombre significativo, en lugar de depender solamente de una posición numérica.

Por ejemplo, una lista puede guardar ["Maya", 29, "maya@example.com"], pero es necesario recordar qué significa cada posición. Un diccionario expresa la misma información de forma más clara:

person = {
    "name": "Maya",
    "age": 29,
    "email": "maya@example.com",
}

print(person["email"])

Esta guía explica cómo crear diccionarios, consultar valores, añadir y eliminar elementos, recorrer pares, trabajar con estructuras anidadas, usar comprensiones y evitar errores frecuentes. Para comparar esta estructura con otras colecciones, consulta la guía sobre listas, tuplas, sets y diccionarios en Python.

Qué es un diccionario

Un diccionario es una estructura mutable que relaciona claves únicas con valores. Las claves deben ser objetos hashables, como cadenas, números o tuplas inmutables. Los valores pueden ser prácticamente cualquier objeto de Python: texto, números, listas, funciones u otros diccionarios.

Los diccionarios modernos conservan el orden de inserción, aunque su objetivo principal sigue siendo localizar información mediante una clave. La guía oficial de diccionarios de Python presenta las operaciones fundamentales de esta estructura.

Crear diccionarios

La forma más habitual utiliza llaves, dos puntos y comas:

empty = {}

student = {
    "name": "Noah",
    "grades": [8.5, 9.0, 7.8],
    "active": True,
}

También puedes utilizar dict() cuando las claves son nombres válidos:

settings = dict(
    theme="dark",
    language="es",
    notifications=True,
)

Una tupla puede ser clave si todos sus elementos son inmutables. Una lista no puede serlo porque su contenido puede cambiar. La guía de tuplas en Python explica por qué la inmutabilidad permite utilizar ciertos objetos como claves.

Acceder a valores con seguridad

Los corchetes devuelven el valor asociado a una clave:

user = {"name": "Ava", "role": "editor"}
print(user["role"])

Cuando la clave no existe, Python genera KeyError. Si la ausencia es normal, utiliza get():

print(user.get("email"))
print(user.get("email", "Correo no disponible"))

Usa corchetes cuando la clave sea obligatoria y un dato ausente indique un problema. Usa get() cuando el campo sea opcional. Para responder a errores esperados, revisa la guía de try y except en Python.

Añadir y modificar elementos

La asignación añade una clave nueva o sustituye el valor existente:

profile = {"name": "Leo", "city": "Madrid"}
profile["age"] = 34
profile["city"] = "Valencia"

Con update() puedes aplicar varios cambios:

profile.update({
    "job": "Developer",
    "remote": True,
})

El operador | crea una combinación nueva en versiones modernas de Python:

defaults = {"theme": "light", "page_size": 20}
custom = {"theme": "dark"}
final = defaults | custom

Cuando una clave aparece en ambos diccionarios, prevalece el valor del diccionario situado a la derecha.

Eliminar elementos

del elimina una clave que debe existir:

cart = {"book": 2, "pen": 5, "notebook": 1}
del cart["pen"]

pop() elimina la clave y devuelve su valor. Un valor predeterminado evita un error si la clave está ausente:

quantity = cart.pop("book", 0)
print(quantity)

popitem() elimina el último par insertado, mientras que clear() vacía todo el diccionario.

keys(), values() e items()

Los métodos de vista más utilizados son:

  • keys(): devuelve las claves;
  • values(): devuelve los valores;
  • items(): devuelve pares de clave y valor.
prices = {"coffee": 3.50, "tea": 2.80, "juice": 4.10}

print(list(prices.keys()))
print(list(prices.values()))
print(list(prices.items()))

Estas vistas reflejan los cambios posteriores realizados en el diccionario.

Recorrer un diccionario

Un bucle normal recorre las claves:

inventory = {"laptop": 8, "mouse": 24, "monitor": 11}

for product in inventory:
    print(product)

Cuando necesitas la clave y el valor, utiliza items():

for product, quantity in inventory.items():
    print(f"{product}: {quantity}")

La guía de bucles for en Python explica cómo recorrer colecciones, usar enumerate() y controlar iteraciones.

Comprobar claves y valores

El operador in busca claves:

account = {"username": "sam", "verified": False}

if "verified" in account:
    print("El campo existe")

Para buscar entre los valores, utiliza value in account.values(). Cuando las comprobaciones de pertenencia sean muy frecuentes y solo importe la existencia, un set puede ser una mejor opción. La guía de sets en Python explica sus ventajas.

Diccionarios anidados

Un diccionario puede contener otros diccionarios. Esto es habitual en JSON, respuestas de APIs y configuraciones:

company = {
    "engineering": {
        "manager": "Priya",
        "employees": 18,
    },
    "design": {
        "manager": "Chris",
        "employees": 7,
    },
}

print(company["engineering"]["manager"])

Un nivel pequeño de anidación es manejable. Cuando la estructura se vuelve profunda, conviene separar datos en variables, funciones o clases.

Comprensiones de diccionarios

Una comprensión crea un diccionario a partir de un iterable:

squares = {
    number: number ** 2
    for number in range(1, 6)
}

También puedes filtrar:

even_squares = {
    number: number ** 2
    for number in range(1, 11)
    if number % 2 == 0
}

Utiliza una comprensión cuando la transformación sea corta. Para varias validaciones o efectos secundarios, un bucle normal resulta más claro.

Ejemplo práctico: catálogo de productos

products = {
    "KB100": {"name": "Keyboard", "price": 59.90, "stock": 12},
    "MS200": {"name": "Mouse", "price": 24.90, "stock": 30},
}


def add_product(code, name, price, stock):
    if code in products:
        raise ValueError("El código ya existe")

    products[code] = {
        "name": name,
        "price": price,
        "stock": stock,
    }


def inventory_value():
    return sum(
        item["price"] * item["stock"]
        for item in products.values()
    )


add_product("HD300", "External drive", 79.90, 6)
print(f"Valor del inventario: ${inventory_value():.2f}")

Este ejemplo combina diccionarios, validación, funciones y expresiones generadoras. La guía de funciones en Python ayuda a organizar responsabilidades reutilizables.

Copias superficiales y profundas

copy() crea un diccionario exterior nuevo, pero los objetos mutables anidados siguen compartidos:

original = {"tags": ["python", "data"]}
copy_data = original.copy()
copy_data["tags"].append("web")

print(original)

Cuando necesitas independencia completa, utiliza copy.deepcopy() después de comprender el coste y la estructura de los objetos.

Errores frecuentes

  • Acceder directamente a una clave opcional.
  • Intentar utilizar una lista como clave.
  • Modificar el tamaño del diccionario durante la iteración.
  • Confundir una copia superficial con una copia independiente.
  • Crear niveles de anidación difíciles de mantener.
  • Usar un diccionario cuando solo se necesita una secuencia ordenada.

Cuándo usar un diccionario

Elige un diccionario cuando los datos tengan etiquetas significativas, necesites localizar valores rápidamente o una entidad deba asociarse con otra. Son habituales en perfiles de usuario, catálogos, configuraciones, contadores, cachés, respuestas de APIs e índices.

La referencia oficial del tipo dict documenta todos los métodos y comportamientos disponibles.

Conclusión

Los diccionarios ofrecen acceso mediante claves, modificación directa, métodos de recorrido y una sintaxis flexible. Empieza dominando la creación, get(), items(), las comprobaciones con in y las estructuras anidadas. Después practica con un inventario, una agenda o un gestor de configuraciones.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    notebook com código saindo da tela
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Variables: asignación, tipos y alcance en Python

    Aprende variables en Python: asignación, nombres, tipos, conversiones, referencias, mutabilidad, alcance, constantes, None y errores frecuentes.

    Ler mais

    Tempo de leitura: 4 minutos
    12/07/2026
    Diferença entre operadores is e == em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    == vs is en Python: igualdad vs identidad

    Entiende la diferencia entre == e is en Python, igualdad, identidad, None, interning, copias superficiales, deepcopy y objetos personalizados.

    Ler mais

    Tempo de leitura: 4 minutos
    12/07/2026
    Menu interativo no terminal criado com Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Menú interactivo en terminal con Python

    Crea un menú interactivo en Python con while, funciones, diccionarios, validación, submenús, persistencia JSON y manejo seguro de errores.

    Ler mais

    Tempo de leitura: 4 minutos
    12/07/2026
    ícone de loop com o texto 'While' abaixo
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    while: repite acciones con condiciones en Python

    Aprende bucles while en Python con condiciones, validación, menús, break, continue, else, centinelas, reintentos y buenas prácticas.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Imagem de um quadro negro com várias interrogações no lugar de lâmpadas, e uma lâmpada conectada no meio
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    if, elif y else: lógica condicional en Python

    Aprende if, elif y else en Python con comparaciones, operadores lógicos, validación, rangos, menús, retornos tempranos y pruebas.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Manipulação de dados JSON em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    JSON en Python: leer, escribir y validar datos

    Aprende JSON en Python con load, loads, dump, dumps, archivos UTF-8, validación, APIs, Decimal, fechas y escritura segura.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026