0Pricing
DSA Interview Prep · Lección

Diccionarios y conjuntos en Python

Explore la construcción de dict y set, las pruebas de pertenencia y patrones habituales, como contar frecuencias con collections.Counter.

Diccionarios y conjuntos en Python es una lección gratuita de DSA Interview Prep en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de DSA Interview Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de DSA Interview Prep incluye 4 lecciones en total.

Diccionarios de Python: almacenes de pares clave-valor

Un dict de Python asigna claves a valores, con búsquedas, inserciones y eliminaciones promedio de O(1). Es la base de two-sum, las comprobaciones de anagramas y el recuento de frecuencias. El código lo muestra.

d = {'apple': 3, 'banana': 5}
print(d['apple'])   # 3
d['cherry'] = 7
print(len(d))       # 3
print('banana' in d)  # True
del d['apple']
print(d)            # {'banana': 5, 'cherry': 7}

Búsquedas seguras con .get()

Leer una clave inexistente con d[key] provoca un error KeyError. Utilice d.get(key, default) para devolver un valor alternativo; es un hábito seguro que evita errores de ejecución inesperados.

freq = {}
words = ['the', 'cat', 'sat', 'on', 'the', 'mat']
for w in words:
    freq[w] = freq.get(w, 0) + 1
print(freq)
# {'the': 2, 'cat': 1, 'sat': 1, 'on': 1, 'mat': 1}

print(freq.get('dog', 0))  # 0  (no KeyError)

defaultdict para agrupar de forma más limpia

defaultdict(list) crea automáticamente una lista vacía para cada clave nueva, por lo que los problemas de agrupación dejan de requerir código repetitivo. defaultdict(int) inicia cada clave en 0 para facilitar el recuento.

from collections import defaultdict

groups = defaultdict(list)
words = ['eat', 'tea', 'tan', 'ate', 'nat', 'bat']
for w in words:
    key = ''.join(sorted(w))  # canonical anagram key
    groups[key].append(w)

print(list(groups.values()))
# [['eat','tea','ate'], ['tan','nat'], ['bat']]

Counter: mapas de frecuencias rápidos

Counter es un dict diseñado para contar: proporciónele cualquier iterable y obtendrá al instante un mapa de frecuencias. most_common(k) devuelve los k elementos principales. El código muestra una comprobación de anagramas.

from collections import Counter

c = Counter('abracadabra')
print(c)           # Counter({'a':5,'b':2,'r':2,'c':1,'d':1})
print(c.most_common(2))  # [('a', 5), ('b', 2)]

# Valid anagram check
def is_anagram(s, t):
    return Counter(s) == Counter(t)

print(is_anagram('anagram', 'nagaram'))  # True

Conjuntos de Python: colecciones no ordenadas de elementos únicos

Un set contiene elementos únicos y permite comprobar la pertenencia en O(1). Utilice {1, 2, 3} o set(iterable), pero {} crea un dict, así que use set() para crear uno vacío. Son ideales para detectar duplicados.

seen = set()
nums = [1, 2, 3, 2, 1, 4]
duplicates = []
for n in nums:
    if n in seen:          # O(1) check
        duplicates.append(n)
    seen.add(n)
print(duplicates)  # [2, 1]
print(len(seen))   # 4  (unique values)

Operaciones con conjuntos para entrevistas técnicas

Los conjuntos permiten hacer operaciones matemáticas: | unión, & intersección, - diferencia y ^ diferencia simétrica. Con ellas puede resolver en una sola línea preguntas del tipo «elementos comunes».

a = {1, 2, 3, 4}
b = {3, 4, 5, 6}

print(a | b)  # {1, 2, 3, 4, 5, 6}  union
print(a & b)  # {3, 4}              intersection
print(a - b)  # {1, 2}              difference
print(a ^ b)  # {1, 2, 5, 6}        symmetric diff

Comprobación de pertenencia: lista frente a conjunto

La estructura que elija cambia la velocidad. Comprobar in en una lista cuesta O(n); en un conjunto, O(1). Convertir una lista en un conjunto antes de hacer búsquedas repetidas es una optimización habitual.

word_list = ['apple', 'banana', 'cherry', 'date']
word_set  = set(word_list)

# O(n) per check
print('banana' in word_list)  # True

# O(1) per check
print('banana' in word_set)   # True

# Practical example: find common elements
a = [1, 2, 3, 4, 5]
b = [3, 4, 5, 6, 7]
common = [x for x in a if x in set(b)]
print(common)  # [3, 4, 5]

Recorrer dicts: claves, valores y elementos

Recorra un dict con .keys(), .values() o .items(). Nunca elimine claves durante el bucle: recopílelas primero en una lista y elimínelas después. Consulte el código.

scores = {'Alice': 90, 'Bob': 75, 'Carol': 88}

for name, score in scores.items():
    print(f'{name}: {score}')

# Find key with max value
best = max(scores, key=scores.get)
print(best)  # Alice

# Safe deletion
to_del = [k for k, v in scores.items() if v < 80]
for k in to_del:
    del scores[k]
print(scores)  # {'Alice': 90, 'Carol': 88}

Frozenset: conjuntos hashable

Un frozenset es un conjunto inmutable, por lo que puede ser una clave de un dict o estar dentro de otro conjunto. Resulta útil para agrupar anagramas por su conjunto de letras cuando el orden no importa.

from collections import defaultdict

words = ['eat', 'tea', 'tan', 'ate', 'nat', 'bat']
groups = defaultdict(list)
for w in words:
    key = frozenset(w)  # hashable; 'eat','tea','ate' all share same key
    groups[key].append(w)

print([sorted(g) for g in groups.values()])
# [['ate','eat','tea'], ['nat','tan'], ['bat']]

Comprensiones de diccionarios para transformaciones

Las dict comprehensions crean un mapeo en una sola línea: {k: v for ...}. Son ideales para invertir un dict o filtrar pares. Tenga en cuenta que invertirlo presupone que los valores son únicos. Consulte el código.

# Invert a dict
original = {'a': 1, 'b': 2, 'c': 3}
inverted = {v: k for k, v in original.items()}
print(inverted)  # {1:'a', 2:'b', 3:'c'}

# Filter by value
scores = {'Alice': 90, 'Bob': 55, 'Carol': 78}
passing = {k: v for k, v in scores.items() if v >= 60}
print(passing)  # {'Alice': 90, 'Carol': 78}

Secuencia consecutiva más larga

Los conjuntos resuelven el problema de la longest consecutive sequence en O(n): introduzca todos los números en un conjunto y cuente hacia arriba solo desde los números cuyo predecesor no esté presente. No hace falta ordenar.

def longest_consecutive(nums):
    num_set = set(nums)
    best = 0
    for n in num_set:
        if n - 1 not in num_set:  # start of sequence
            cur = n
            streak = 1
            while cur + 1 in num_set:
                cur += 1
                streak += 1
            best = max(best, streak)
    return best

print(longest_consecutive([100,4,200,1,3,2]))  # 4 (1,2,3,4)

Comprobación rápida

Comprobación rápida: compruebe cuánto ha asimilado de las ideas sobre dicts y conjuntos de esta lección. Confíe en su intuición. 🎯

Resumen de la lección

Resumen: los dicts ofrecen búsquedas O(1) para contar y agrupar, Counter y defaultdict reducen el código repetitivo y los sets convierten recorridos O(n) en comprobaciones O(1).

Preguntas frecuentes

¿La lección «Diccionarios y conjuntos en Python» es gratis?

Sí — el texto completo de «Diccionarios y conjuntos en Python» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de DSA Interview Prep, actualiza a CoddyKit PRO. El curso de DSA Interview Prep incluye 4 lecciones en total.

¿Qué aprenderé en «Diccionarios y conjuntos en Python»?

Explore la construcción de dict y set, las pruebas de pertenencia y patrones habituales, como contar frecuencias con collections.Counter. Practicas DSA Interview Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar DSA Interview Prep?

No se requiere experiencia previa. DSA Interview Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Diccionarios y conjuntos en Python»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de DSA Interview Prep?

Sí. Cada lección de DSA Interview Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Listas, tuplas y slicing
  2. Diccionarios y conjuntos en Python
  3. Comprensiones y funciones integradas
  4. Funciones, cierres y lambda
← Volver a DSA Interview Prep