Si buscás el mismo tipo de dato una y otra vez, recorrer una lista cada vez suele ser una señal.
Un diccionario permite preguntar por una clave; un conjunto responde si un valor pertenece.
El diccionario: pares con clave única
Un diccionario guarda pares clave-valor. Las claves son únicas: asignar otra vez la misma clave
actualiza su valor según la interfaz habitual.
La clave expresa cómo se identifica un registro; el valor guarda la información asociada.
Diccionario vacío. Las cubetas son un detalle de la implementación; lo que importa es que cada clave tiene un lugar.
1 / 5
Las claves son únicas: la segunda asignación pisa a la primera. Eso es lo que distingue un diccionario de una lista de pares, donde las dos convivirían.
Antes de seguir, predecí
El conjunto: pertenencia sin repetidos
Un conjunto guarda valores sin repeticiones. Sirve para pertenencia, deduplicación e intersección.
Si sólo importa saber si un identificador ya apareció, un Set comunica mejor la intención que
un mapa con booleanos ficticios.
Agregar dos veces el mismo valor no cambia el conjunto. Esa propiedad permite eliminar duplicados,
pero el orden resultante depende del contrato concreto de la implementación.
Tabla hash o árbol balanceado
Una tabla hash ofrece búsqueda, inserción y borrado esperados en O(1), siempre que distribuya
bien las claves y controle colisiones. Un árbol balanceado ofrece O(logn) en peor caso y además
mantiene las claves ordenadas.
La interfaz “diccionario” no obliga a una implementación. Si necesitamos recorrer por rango o pedir
el siguiente elemento, el orden de un árbol puede valer más que el promedio constante de un hash.
Escena 1 — Del contenido de la clave a una posición
paso a paso
Cargando la escena…
El hash se calcula sobre el contenido de la clave: eso es lo que permite ir directo a la cubeta en vez de recorrer. Agregá claves y aparecen las colisiones, que no son un error sino el caso normal.
Qué hace que algo pueda ser clave
Una clave debe tener igualdad estable mientras permanece en la estructura. Usar objetos mutables
según su contenido puede volver inaccesible una entrada si cambia aquello que determinaba su hash.
También hay que distinguir ausencia de un valor almacenado equivalente a vacío. Métodos como
has responden pertenencia; get responde contenido. Mezclarlos puede confundir “no existe” con
“existe y su valor es indefinido”.
Cuál de los cuatro
Objeto plano
Map
Set
Arreglo
Claves
sólo texto y símbolos
cualquier valor
no aplica
índices
Mantiene el orden de inserción
no garantizado con claves numéricas
sí
sí
sí
Saber cuántos hay
Object.keys().length: O(n)
size: O(1)
size: O(1)
length
Riesgo de colisión con heredados
sí: toString, constructor
no
no
no
Cuándo va
datos con forma fija y conocida
un diccionario de verdad
pertenencia y unicidad
orden y recorrido
La cuarta fila es la que convierte un objeto plano usado como diccionario en un problema de seguridad: una clave llamada como una propiedad heredada devuelve algo que nadie guardó.
Cierre
Diccionarios modelan asociaciones y conjuntos modelan pertenencia. Elegirlos elimina recorridos
repetidos y hace visible el contrato. Después se elige hash o árbol según garantías, orden y
operaciones necesarias.