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 Coding 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 Coding Interview Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Coding 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')) # TrueConjuntos 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 diffComprobació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 Coding Interview Prep, actualiza a CoddyKit PRO. El curso de Coding 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 Coding 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 Coding Interview Prep?
No se requiere experiencia previa. Coding 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 Coding Interview Prep?
Sí. Cada lección de Coding 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
- Listas, tuplas y slicing
- Diccionarios y conjuntos en Python
- Comprensiones y funciones integradas
- Funciones, cierres y lambda