beginner⏱30 minutosLección 8 de 10
Diccionarios y Conjuntos
Domina los pares clave-valor con diccionarios y las colecciones únicas no ordenadas con conjuntos
Diccionarios y Conjuntos
Los diccionarios almacenan pares clave-valor para búsquedas rápidas. Los conjuntos almacenan elementos únicos para pruebas de pertenencia y operaciones matemáticas.
Diccionarios (dict)
Los diccionarios mapean claves a valores:
python
# Creando diccionarios
student = {
"name": "Alice",
"age": 22,
"major": "Computer Science",
"gpa": 3.8
}
# Constructor alternativo
student = dict(name="Alice", age=22, major="CS")Accediendo a Valores
python
print(student["name"]) # "Alice"
print(student.get("age")) # 22
print(student.get("grade", "N/A")) # "N/A" (acceso seguro)Warning
Acceder a una clave que no existe con [] lanza un KeyError. Usa .get() para acceso seguro.
Modificando Diccionarios
python
student["gpa"] = 3.9 # Actualizar valor
student["year"] = 3 # Agregar nueva clave-valor
del student["age"] # Eliminar clave
popped = student.pop("major") # Eliminar y devolverMétodos de Diccionarios
python
for key in student:
print(key)
for value in student.values():
print(value)
for key, value in student.items():
print(f"{key}: {value}")
# Verificar existencia de clave
if "name" in student:
print("Name exists")Caso de Uso Real: Contador de Palabras
python
text = "the quick brown fox jumps over the lazy dog"
word_count = {}
for word in text.split():
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
print(word_count)
# {'the': 2, 'quick': 1, 'brown': 1, ...}Usando defaultdict (más simple)
python
from collections import defaultdict
word_count = defaultdict(int)
for word in text.split():
word_count[word] += 1Conjuntos (set)
Los conjuntos almacenan elementos únicos y no ordenados:
python
# Creando conjuntos
fruits = {"apple", "banana", "cherry", "apple"} # Duplicados eliminados
numbers = set([1, 2, 3, 3, 2, 1]) # {1, 2, 3}
empty = set() # {} crea un dict vacío, ¡no un set!Operaciones con Conjuntos
python
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
print(a | b) # Unión: {1, 2, 3, 4, 5, 6}
print(a & b) # Intersección: {3, 4}
print(a - b) # Diferencia: {1, 2}
print(a ^ b) # Diferencia simétrica: {1, 2, 5, 6}Métodos de Conjuntos
python
a.add(7) # Agregar elemento
a.remove(7) # Eliminar (lanza KeyError si no existe)
a.discard(10) # Eliminar (sin error si no existe)
print(3 in a) # Prueba de pertenencia (¡muy rápido!)Note
Los conjuntos están optimizados para pruebas de pertenencia (in) — O(1) promedio vs O(n) para listas. Usa conjuntos cuando el orden no importe y no deban existir duplicados.
Casos de Uso del Mundo Real
Visitantes Únicos
python
visitor_ips = set()
visitor_ips.add("192.168.1.1")
visitor_ips.add("192.168.1.2")
visitor_ips.add("192.168.1.1") # Duplicado, ignorado
print(f"Unique visitors: {len(visitor_ips)}")Encontrando Elementos Comunes
python
python_students = {"Alice", "Bob", "Charlie"}
java_students = {"Bob", "Diana", "Eve"}
both = python_students & java_students
print(f"Students in both: {both}")Eliminando Duplicados de una Lista
python
items = [1, 2, 2, 3, 3, 3, 4]
unique = list(set(items)) # [1, 2, 3, 4]Success
*Python 3.7+ los dicts mantienen orden de inserción. Los sets almacenan valores únicos.
Preguntas de Práctica
- Crea un diccionario para un libro con título, autor y año.
- ¿Cómo obtienes un valor de un dict de forma segura sin arriesgar un KeyError?
- ¿Cuál es la diferencia entre
{}yset()? - Escribe código para contar la frecuencia de caracteres en una cadena usando un dict.
- ¿Cómo encuentras elementos únicos entre dos listas usando conjuntos?
- ¿Qué devuelve
{1, 2, 3} - {2, 3, 4}? - ¿Cómo recorres tanto las claves como los valores de un diccionario?
- ¿Por qué las pruebas de pertenencia en conjuntos son más rápidas que en listas?
- Elimina duplicados de
[1, 1, 2, 3, 3, 4, 5, 5]. - ¿Qué sucede si agregas un elemento duplicado a un conjunto?
Progreso80%