Pensamiento Computacional (090) · Unidad 4 — Estructuras de datos
Diccionarios
Un diccionario guarda pares clave-valor. En vez de buscar por posición, buscás por nombre — y eso cambia todo.
La explicación
Buscar por nombre, no por número
notas["ana"] → 9
len(notas) → 3
Van con llaves, y cada elemento es clave: valor. La clave hace de índice, y
en vez de ser un número puede ser un texto que significa algo.
Agregar, cambiar, borrar
notas["ana"] = 10 # si existe, la pisa
del notas["luis"] # la borra
Las claves son únicas: no puede haber dos "ana". Asignar sobre una clave existente reemplaza el valor.
La clave que no está
notas.get("pepe") → None, sin error
notas.get("pepe", 0) → 0, el valor por defecto
"pepe" in notas → False
get o preguntá con in antes.
get con valor por defecto es especialmente cómodo para contar cosas.
Recorrer
print(clave, notas[clave])
for clave, valor in notas.items(): # las dos cosas
print(clave, valor)
Ojo: for x in notas recorre las claves, no los valores. Es de lo que más
confunde al principio. Si querés los valores sueltos, notas.values().
Contar cosas: el uso estrella
cuenta = {}
for letra in texto:
cuenta[letra] = cuenta.get(letra, 0) + 1
print(cuenta) # {'c': 1, 'a': 2, 's': 1}
La línea del medio es el idioma que conviene memorizar: "lo que había, o 0 si no había, más
uno". Sin get habría que preguntar con un if cada vez.
Escribir una función que reciba una lista de palabras y devuelva un diccionario con cuántas veces aparece cada una.
El patrón de conteo, que sirve para esto y para mil cosas más:
cuenta = {}
for p in palabras:
cuenta[p] = cuenta.get(p, 0) + 1
return cuenta
Con ["sol", "mar", "sol"]:
"mar" → no estaba: queda en 1
"sol" → ya estaba en 1: queda en 2
resultado: {"sol": 2, "mar": 1}
Por qué get(p, 0) y no cuenta[p]. La primera vez que aparece
una palabra, la clave todavía no existe. Con corchetes eso sería un KeyError y el
programa se cortaría en la primera palabra.
get necesita un if y tres líneas donde había una:
cuenta[p] = cuenta[p] + 1
else:
cuenta[p] = 1
get es la que vas a
ver escrita en todos lados.
Control: la suma de todos los valores del diccionario tiene que dar la cantidad de elementos de la lista original. Acá 2 + 1 = 3 ✓
Dónde se cae la mayoría
- Acceder con corchetes a una clave que no existe: KeyError y el programa se corta.
- Creer que for x in diccionario recorre los valores. Recorre las claves.
- Esperar que se puedan repetir claves. Asignar sobre una existente la pisa.
Hasta acá la explicación. La práctica es la otra mitad: 7 ejercicios de este tema, en cuatro niveles, que no te dicen sólo si está bien al final sino que te corrigen en cada paso y te explican por qué. Además trae una animación que muestra la idea en movimiento.
Practicar Diccionarios →