Fundamentos de Programación · Programación

Diccionarios y conjuntos

Usar diccionarios para asociar claves y valores y conjuntos para trabajar con unicidad y operaciones entre colecciones.

Diccionarios y conjuntos

Asociar, no enumerar El diccionario es la estructura más parecida a cómo piensa un humano: una etiqueta que remite a un valor. Buscar por nombre, no por número, hace que la mayoría de los modelos de datos se escriban, literalmente, con diccionarios.

Un diccionario guarda pares de clave y valor. Las claves son únicas e inmutables, y dan acceso casi instantáneo al valor asociado. Un registro con nombre y edad se representa como un diccionario con dict y esas dos llaves.

Crear y acceder

Recorrer un diccionario

Cuándo es la herramienta correcta

Cuando necesitas buscar por un identificador arbitrario (una matrícula, un correo, un código) en lugar de por posición. El diccionario convierte ese acceso en algo directo y veloz.

Los conjuntos y su propiedad clave

Un conjunto es una colección sin orden y sin duplicados. No tiene sentido indexarlo: su razón de ser es saber si un elemento pertenece, cuántos hay y solapar grupos.

Eliminar duplicados

Operaciones entre conjuntos

Pertenencia veloz

Comprobar si un valor está en un conjunto es mucho más rápido que buscarlo dentro de una lista, sobre todo cuando el tamaño crece. Esa ventaja decide usar un conjunto como memoria de lo ya visto.

Claves válidas

Etiquetas enlazadas a tarjetas de valor y un circulo con puntos distintos filtrando los repetidos
El diccionario asocia una etiqueta a un valor; el conjunto guarda elementos únicos sin orden.

Contadores y agrupaciones

Contar frecuencias de palabras es un diccionario que se incrementa por clave; agrupar registros bajo una etiqueta es un diccionario de listas. Son dos de los patrones más repetidos en limpieza de datos.

Errores habituales

Ejemplo resuelto: quiénes recibieron ambos mensajes

Tienes un grupo de clientes contactados por correo y otro por SMS, y necesitas saber quiénes recibieron ambos. Se resuelve con conjuntos.

  1. Guardar cada grupo como un conjunto de identificadores, que elimina duplicados automáticamente.
  2. Aplicar la intersección entre ambos conjuntos para quedarte con los compartidos.
  3. Usar la unión si además quieres el total de contactados por al menos un canal.
  4. Emplear la diferencia para aislar quienes solo recibieron correo.
  5. Convertir a lista el resultado solo si necesitas un orden estable.

¿Para qué sirve en la realidad?

Agrupar registros por etiqueta y deduplicar catálogos son tareas constantes en limpieza de datos: el diccionario lleva de una clave a sus valores y el conjunto responde al instante a quién pertenece a qué grupo.

La característica que distingue a un conjunto de una lista es que el conjunto:

Una lista puede usarse como clave de un diccionario.

Asociaciones

Colección de pares clave y valor
diccionario
Colección sin orden ni repetidos
conjunto
Acceso con valor de reserva si falta
get
Pares compartidos entre dos conjuntos
intersección
Vista de pares clave y valor
items

Empareja cada necesidad con la estructura que la resuelve mejor.

Diccionario
Conjunto
Lista

Arreglo asociativo
Estructura que asocia claves con valores; base del diccionario.

Une cada necesidad con la estructura que la resuelve:

Diccionarios y conjuntos

# Asociaciones
## Diccionario
### pares clave y valor
### claves únicas e inmutables
### get con defecto
## Conjunto
### sin orden ni repetidos
### unión, intersección, diferencia
## Claves válidas
### números, cadenas, tuplas
### nunca listas

Conjunto (tipo abstracto)
Colección no ordenada de elementos sin duplicados.

Necesitas saber qué clientes recibieron un correo y cuáles un SMS, y luego quiénes recibieron ambos. Explica qué estructura usarías para cada grupo y qué operación aplica para la intersección.