{}const=>[]async()letfn</>var
DesarrolloFundamentos

Diccionarios y tablas hash: una guía completa para desarrolladores principiantes

Aprenda cómo funcionan los diccionarios y las tablas hash, las estructuras de datos más importantes en programación. El artículo explica en términos sencillos los principios de trabajo con pares clave-valor, el mecanismo de hash, los métodos de resolución de colisiones y ejemplos prácticos de uso.

К

Kodik

Autor

5 min de lectura

¿Qué es un diccionario?

Un diccionario (dictionary, map, associative array) es una estructura de datos que almacena pares de «clave-valor». Cada clave única corresponde a un valor específico. Es como un diccionario normal, donde la palabra (clave) está asociada con su definición (valor).

En Python, los diccionarios se ven así:

student = {
    "name": "Anna",
    "age": 22,
    "specialty": "Programming"
}

print(student["name"])  # Presentado por: Anna

JavaScript utiliza una sintaxis similar:

const student = {
    name: "Anna",
    age: 22,
    specialty: "Programming"
};

console.log(student.name);  // Presentado por: Anna

🔥 100.000+ estudiantes ya están con nosotros

¿Cansado de leer teoría?
¡Hora de programar!

Kodik — una app donde aprendes a programar con práctica. Mentor IA, lecciones interactivas, proyectos reales.

🤖 IA 24/7
🎓 Certificados
💰 Gratis
🚀 Empezar
Se unieron hoy

Operaciones básicas con diccionarios

Añadir y modificar elementos

# Python
grades = {}
grades["Mathematics"] = 5
grades["Physics"] = 4
grades["Mathematics"] = 5  # Cambio de valor existente

print(grades)  # {'matemáticas': 5, 'física': 4}4}

Obtención de valores

# Acceso directo (provocará un error si la clave no está presente)
print(grades["Mathematics"])  # 5

# Recepción segura con valor predeterminado
print(grades.get("Chemistry", 0))  # 0 (no hay clave, se devolverá el valor predeterminado)

Eliminación de elementos

del grades["Physics"]  # Elimina el par clave-valor

# O con la ayuda de pop (devuelve el valor eliminado)
math_grade = grades.pop("Mathematics")

Comprobación de la presencia de la llave

if "Physics" in grades:
    print("Physics grade is")
else:
    print("No rating")

¿Qué es una tabla hash?

Una tabla hash es una forma de implementar un diccionario "bajo el capó". Esta es la magia que permite que los diccionarios funcionen muy rápido.

¿Cómo funciona una tabla hash?

Cuando añades un elemento al diccionario, sucede lo siguiente:

  1. Hash de la clave: la clave se convierte en un número (código hash) mediante una función especial

  2. Determinación de la posición: basado en el código hash, se calcula el índice en la matriz

  3. Guardar el valor: la pareja clave-valor se almacena en este índice

# Ejemplo simplificado de una función hash
def simple_hash(key, table_size):
    return sum(ord(char) for char in key) % table_size

# Para la clave "cat" y el tamaño de la tabla 10
hash_value = simple_hash("cat", 10)  # Devuelve un número del 0 al 9

Colisiones

A veces, diferentes claves pueden dar el mismo hash. Esto se llama colisión. Hay varias formas de resolverlas:

Método de la cadena: si dos pares tienen el mismo hash, se almacenan como una lista en un índice.

Direccionamiento abierto: si la celda está ocupada, se busca la siguiente celda libre.

Complejidad de las operaciones

Una de las principales ventajas de los diccionarios es la velocidad de trabajo:

  • Añadir elemento: O(1) en promedio

  • Búsqueda de elementos: O(1) en promedio

  • Eliminación de elementos: O(1) en promedio

Esto significa que el tiempo de ejecución de la operación no depende del número de elementos en el diccionario. A modo de comparación, la búsqueda en una lista requiere tiempo O(n): hay que comprobar cada elemento.

Ejemplos prácticos de uso

Recuento de la frecuencia de los elementos

text = "hello world"
letter_count = {}

for letter in text:
    if letter in letter_count:
        letter_count[letter] += 1
    else:
        letter_count[letter] = 1

print(letter_count)
# {'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1}

Una forma más elegante de usar get():

text = "hello world"
letter_count = {}

for letter in text:
    letter_count[letter] = letter_count.get(letter, 0) + 1

Agrupación de datos

students = [
    {"name": "Anna", "group": "A"},
    {"name": "Ivan", "group": "B"},
    {"name": "Maria", "group": "A"},
]

groups = {}
for student in students:
    group_name = student["group"]
    if group_name not in groups:
        groups[group_name] = []
    groups[group_name].append(student["name"])

print(groups)
# {'A': ['Ana', 'María'], 'B': ['Iván']}

Almacenamiento en caché de resultados

def fibonacci(n, cache={}):
    if n in cache:
        return cache[n]
    
    if n <= 1:
        return n
    
    result = fibonacci(n-1, cache) + fibonacci(n-2, cache)
    cache[n] = result
    return result

print(fibonacci(100))  # Se calculará muy rápidamente gracias al almacenamiento en caché

¿Cuándo usar diccionarios?

Los diccionarios son ideales para:

  • Almacenamiento de ajustes y configuraciones

  • Recuento de la frecuencia de los elementos

  • Búsqueda rápida por identificador único

  • Agrupaciones y agregaciones de datos

  • Caché de cálculos

  • Representación de grafos (lista de adyacencia)

Características importantes

Las claves deben ser inalterables: en Python, las claves pueden ser cadenas, números, tuplas, pero no listas u otros diccionarios.

# Correcto
valid_dict = {
    "name": "value",
    42: "value",
    (1, 2): "value"
}

# ¡Error! Las listas son modificables# invalid_dict = {[1, 2]: "value"}

Orden de los elementos: en Python 3.7+ los diccionarios mantienen el orden en que se agregan los elementos, pero solo vale la pena confiar en esto si el orden es realmente importante.

Productividad: los diccionarios consumen más memoria que las listas, pero lo compensan con la velocidad de acceso.

Conclusión

Los diccionarios y las tablas hash son estructuras de datos fundamentales que todo desarrollador debe comprender. Permiten organizar los datos de manera eficiente y resolver muchas tareas prácticas. Comprender los principios de su funcionamiento te ayudará a escribir un código más rápido y eficiente.

Comience a utilizar diccionarios en sus proyectos y apreciará rápidamente su poder y conveniencia. Practique con tareas sencillas, haciéndolas gradualmente más complejas, y pronto el trabajo con diccionarios le resultará natural.

La teoría es genial, pero la verdadera comprensión viene con la práctica. En la aplicación Kodik te esperan cientos de tareas de programación de diferente complejidad, incluyendo ejercicios para trabajar con diccionarios, tablas hash y otras estructuras de datos. ¡Resuelve los problemas a un ritmo cómodo y sigue tu progreso!

Y también tenemos una comunidad activa en Telegram! Aquí los desarrolladores experimentados ayudan a los principiantes, comparten materiales útiles, discuten tareas interesantes y simplemente se comunican sobre temas de programación. El ambiente es amable y de apoyo: cada pregunta es importante y nadie se quedará sin respuesta. ¡Únete a nosotros! 👋

🎯Deja de postergar

¿Te gustó el artículo?
¡Hora de practicar!

En Kodik no solo lees — escribes código de inmediato. Teoría + práctica = habilidades reales.

Práctica instantánea
🧠IA explica código
🏆Certificado

Sin registro • Sin tarjeta