Objetivo: aprender a recorrer con un bucle for las claves, los valores o ambos de un diccionario en Python.
En numerosas ocasiones necesitaremos iterar a través de un diccionario mediante un bucle for. Voy a mostrarte lo sencillo que es y, para eso, te presentaré tres nuevos métodos que debes incorporar en tu kit de herramientas. Si has aterrizado en este artículo de modo casual y es la primera vez que te expones a los diccionarios en Python, te recomiendo que consultes el índice que figura en el menú o al final del artículo y estudies los artículos previos, que introducen los diccionarios desde cero.
Echa las manos al intérprete interactivo y genera un diccionario de pruebas:
>>> macedonia = {'plátano':'amarillo', 'fresa':'roja'}
Imagina que quieres trabajar con las claves de ese diccionario. ¿Cómo las obtenemos?
Empleando el método keys():
>>> frutas = macedonia.keys()
>>> frutas
dict_keys(['fresa', 'plátano'])
Si observas frutas, encontrarás las claves del diccionario, pero se trata de un objeto especial, claves de diccionario. Deja que te lo explique:
Lo que has obtenido es una vista del diccionario. Es como si observaras un objeto, el diccionario, desde una perspectiva diferente que sólo te permitiera apreciar determinadas características.
Hay dos cosas particularmente importantes en las vistas.
La primera es que lo que estás viendo a través de ellas es el objeto real. Si modificamos el diccionario, la vista se actualizará dinámicamente. Obśervalo.
Vamos a agregar un nuevo par clave-valor al diccionario y veamos qué sucede con la vista:
>>> macedonia['manzana'] = 'verde'
>>> macedonia
{'fresa': 'roja', 'plátano': 'amarillo', 'manzana': 'verde'}
¿Qué crees que contendrá ahora la vista frutas?
>>> frutas
dict_keys(['fresa', 'plátano', 'manzana'])
Como ves, se ha actualizado automáticamente sin necesidad de volvera a invocar al método?
La segunda particularidad de las vistas es que ya están preparadas para que puedas iterar sobre ellas:
>>> for fruta in frutas:
print(fruta)
fresa
plátano
manzana
Tras lo cual hemos recuperado todas las claves del diccionario.
Si queremos iterar sobre los valores, en lugar de las claves, disponemos de otro método que genera una nueva vista:
>>> colores = macedonia.values()
>>> colores
dict_values(['roja', 'amarillo', 'verde'])
El método values() nos genera una vista sólo de valores sobre la que ya podemos iterar:
>>> for color in colores:
print(color)
roja
amarillo
verde
Finalmente, ¿y si necesitamos iterar sobre las claves y sus correspondientes valores simultáneamente? La respuesta la encontrarás en el método items():
>>> elementos = macedonia.items()
>>> elementos
dict_items([('fresa', 'roja'), ('plátano', 'amarillo'), ('manzana', 'verde')])
Fíjate cómo iteramos ahora:
>>> for fruta, color in elementos:
print(fruta, '-->', color)
fresa --> roja
plátano --> amarillo
manzana --> verde
Obviamente, no es necesaria la asignación previa de la vista. Tambień podrías haber escrito directamente esto:
>>> for fruta, color in macedonia.items():
print(fruta, '-->', color)
Recuerda: las tres vistas son dinámicas y reflejan la situación actual del objeto.
Vamos a eliminar la fresa de la macedonia:
>>> del macedonia['fresa']
>>> macedonia
{'plátano': 'amarillo', 'manzana': 'verde'}
Y comprobemos nuestras preciosas vistas:
>>> macedonia
{'plátano': 'amarillo', 'manzana': 'verde'}
>>> frutas
dict_keys(['plátano', 'manzana'])
>>> colores
dict_values(['amarillo', 'verde'])
>>> elementos
dict_items([('plátano', 'amarillo'), ('manzana', 'verde')])
Pero, aunque el resultado sea el esperado, coincidirás conmigo que una macedonia sin fresas no es macedonia ni nada…
Javier Montero Gabarró
El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)
El Club del Autodidacta
Consulta el índice completo de artículos relacionados con Python.