¿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: AnnaJavaScript utiliza una sintaxis similar:
const student = {
name: "Anna",
age: 22,
specialty: "Programming"
};
console.log(student.name); // Presentado por: Anna
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:
Hash de la clave: la clave se convierte en un número (código hash) mediante una función especial
Determinación de la posición: basado en el código hash, se calcula el índice en la matriz
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 9Colisiones
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) + 1Agrupació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! 👋
