Estoy un poco desconcertado por el siguiente código:
d = {'x': 1, 'y': 2, 'z': 3}
for key in d:
print key, 'corresponds to', d[key]
Lo que no entiendo es la parte de la "clave". ¿Cómo reconoce Python que sólo necesita leer la clave del diccionario? ¿Es clave
una palabra especial en Python? ¿O es simplemente una variable?
clave
es sólo un nombre de variable.
for key in d:
simplemente hará un bucle sobre las claves del diccionario, en lugar de las claves y los valores. Para hacer un bucle sobre la clave y el valor puede utilizar lo siguiente:
Para Python 2.x:
for key, value in d.iteritems():
Para Python 3.x:
for key, value in d.items():
Para probarlo por ti mismo, cambia la palabra key
por poop
.
Para Python 3.x, iteritems()
ha sido reemplazado por simplemente items()
, que devuelve una vista tipo conjunto respaldada por el dict, como iteritems()
pero aún mejor.
Esto también está disponible en 2.7 como viewitems()
.
La operación items()
funcionará tanto en 2 como en 3, pero en 2 devolverá una lista de los pares (key, value)
del diccionario, que no reflejará los cambios en el dict que se produzcan después de la llamada a items()
. Si quiere el comportamiento de 2.x en 3.x, puede llamar a list(d.items())
.
Cuando se itera a través de los diccionarios utilizando la sintaxis para .. en ..
, siempre se itera sobre las claves (los valores son accesibles utilizando diccionario[clave]
).
Para iterar sobre pares clave-valor, en Python 2 use for k,v in s.iteritems()
, y en Python 3 for k,v in s.items()
.
Este es un lenguaje de bucle muy común. in
es un operador. Para saber cuándo usar para la clave en dict
y cuándo debe ser para la clave en dict.keys()
vea el artículo de David Goodger's Idiomatic Python (copia archivada).