Diccionarios en Python: guía completa para principiantes

Publicado el: 11/07/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, "[email protected]"], 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": "[email protected]",
}

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

    Logo do Python com as palavras global e local
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Alcance de variables en Python: entiende la regla LEGB

    Entiende el alcance de variables en Python con la regla LEGB, global, nonlocal, closures, sombreado, mutabilidad y UnboundLocalError.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Operações matemáticas usando o módulo math em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Módulo math en Python: operaciones matemáticas esenciales

    Aprende el módulo math en Python: raíces, potencias, redondeos, trigonometría, logaritmos, constantes, isclose y ejemplos prácticos.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Geração de números aleatórios seguros usando secrets em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Módulo secrets en Python: números y tokens seguros

    Aprende secrets en Python para generar contraseñas, códigos y tokens seguros con randbelow, choice, token_hex, token_urlsafe y compare_digest.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Uso do operador walrus para atribuições inline em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Operador walrus en Python: guía con ejemplos

    Aprende el operador walrus := en Python: condiciones, while, comprensiones, lectura por bloques, regex, alcance y buenas prácticas.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Uso da função zip para combinar listas em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    zip() en Python: combina listas e iterables correctamente

    Aprende zip() en Python para combinar listas, crear diccionarios, usar strict, zip_longest, desempaquetar valores y evitar pérdidas silenciosas.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Uso do módulo time para controlar tempo em scripts Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Módulo time en Python: pausas, timestamps y rendimiento

    Aprende el módulo time en Python: timestamps, sleep, monotonic, perf_counter, struct_time, strftime y buenas prácticas para medir tiempo.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026