Iterando con diccionarios
Recordemos nuestro diccionario de estudiantes:
# Diccionario de estudiantes
estudiantes = {
'Juan': 'Electricidad',
'María': 'Mecánica',
'Pedro': 'Electrónica'
}
En este momento tiene tres elementos, cada uno con una clave y un valor. Pero, ¿cómo podemos acceder a estos elementos de manera más eficiente? ¿Cómo podemos imprimir cada estudiante y su especialidad sin tener que escribir una línea de código por cada uno de ellos? O mejor aún, ¿cómo podemos hacerlo sin saber cuántos estudiantes hay en el diccionario?
Supongamos que aplicamos la misma metodología que utilizamos con las listas:
# Diccionario de estudiantes
estudiantes = {
'Juan': 'Electricidad',
'María': 'Mecánica',
'Pedro': 'Electrónica'
}
# Iterando sobre el diccionario
for estudiante in estudiantes:
print(estudiante)
¿Qué crees que sucederá si ejecutamos este código?
Haz clic aquí para descubrirlo.
El código imprimirá solo los nombres de los estudiantes, pero no sus especialidades. Esto se debe a que, por defecto, un bucle for
itera sobre las claves del diccionario, no sobre los valores.
Accediendo a los valores de un diccionario en un bucle
Para acceder a los valores de un diccionario en un bucle, podemos hacer lo siguiente:
# Diccionario de estudiantes
estudiantes = {
'Juan': 'Electricidad',
'María': 'Mecánica',
'Pedro': 'Electrónica'
}
# Iterando sobre el diccionario
for estudiante in estudiantes:
print(estudiante, estudiantes[estudiante])
La salida de este código será:
En este caso, estamos utilizando un bucle
for
para iterar sobre las claves del diccionarioestudiantes
. Luego, accedemos a cada valor utilizando la clave correspondiente.En cada iteración, la variable
estudiante
contiene la clave actual, yestudiantes[estudiante]
nos da el valor asociado a esa clave.De esta manera, podemos imprimir tanto las claves como los valores del diccionario en un solo bucle.
Optimizando la la salida en pantalla
Vamos a mejorar un poco el programa:
``` py title="Python" linesnums="1" hl_lines="10"
Diccionario de estudiantes
estudiantes = { 'Juan': 'Electricidad', 'María': 'Mecánica', 'Pedro': 'Electrónica' }
Iterando sobre el diccionario
for estudiante in estudiantes: print(estudiante, estudiantes[estudiante], sep=' estudia en la especialidad de ')
La salida de este código será:
``` py title="Terminal (Entrada/Salida)"
Juan estudia en la especialidad de Electricidad
María estudia en la especialidad de Mecánica
Pedro estudia en la especialidad de Electrónica
En este caso, estamos utilizando la función
print()
para imprimir el nombre del estudiante, seguido de la frase "estudia en la especialidad de", y finalmente la especialidad del estudiante.
También podríamos haber resuelto la línea 10 de la siguiente manera:
O mejor, a mi criterio, utilizando f-strings:
En cualquier caso, el resultado hubiera sido el mismo.
Conclusiones
Cuando se usa un bucle for
con un diccionario, lo que sucede es lo siguiente:
Nombre | Especialidad |
---|---|
Juan | Electricidad |
María | Mecánica |
Pedro | Electrónica |
``` py title="Python" linesnums="1" hl_lines="10"
Diccionario de estudiantes
estudiantes = { 'Juan': 'Electricidad', 'María': 'Mecánica', 'Pedro': 'Electrónica' }
Iterando sobre el diccionario
for estudiante in estudiantes: print(estudiante, estudiantes[estudiante], sep=' estudia en la especialidad de ') ```
La variable que controla el bucle irá almacenando cada una de las claves almacenadas en el diccionario.
En este caso, la variable estudiante
(la llamamos así porque tiene sentido manipular un estudiante a la vez) irá tomando los valores 'Juan'
, 'María'
y 'Pedro'
en cada iteración del bucle; al igual que como lo ha hecho con los números de las listas de nuestros ejemplos anteriores.
Por lo tanto, es muy similar en espíritu a iterar con un bucle for
sobre una lista, pero en lugar de iterar sobre la ubicación numérica, índice o index en inglés, itera sobre las claves (primera columna) de la tabla de arriba.