Mais
Iterando sobre dicionários usando 'for' loops
Estou um pouco perplexo com o seguinte código:
d = {'x': 1, 'y': 2, 'z': 3}
for key in d:
print key, 'corresponds to', d[key]
O que eu não entendo'não entendo é a parte "chave". Como o Python reconhece que só precisa ler a chave do dicionário? A palavra "chave" é uma palavra especial em Python? Ou é simplesmente uma variável?
2875
3
"chave" é apenas um nome variável.
irá simplesmente passar por cima das chaves do dicionário, em vez das chaves e valores. Para fazer um loop sobre ambas as chaves e valores, você pode usar o seguinte:
Para Python 2.x:
Para Python 3.x:
Para testar por si mesmo, mude a palavra "chave" para "cocó".
Para Python 3.x,
iteritems()
foi substituído por simplesmenteitems()
, o que retorna uma visão parecida com um conjunto apoiado pela ditadura, comoiteritems()
mas ainda melhor. Isto também está disponível em 2.7 comoviewitems()
.A operação
items()
irá funcionar tanto para 2 como para 3, mas em 2 irá retornar uma lista dos pares do dicionário(chave, valor)
, que não irá refletir mudanças na dita que acontece após a chamadaitems()
. Se você quiser o comportamento 2.x em 3.x, você pode chamarlist(d.items())
.Quando você itera através de dicionários utilizando o
for ... in ..
-syntax, ele sempre itera sobre as chaves (os valores são acessíveis utilizandodictionary[key]
).Para iterar sobre pares de valores chave, em Python 2 utilize
para k,v em s.iteritems()
, e em Python 3para k,v em s.items()
.Este é um idioma de looping muito comum. "in" é um operador. Para quando utilizar
para chave em dict
e quando deve serpara chave em dict.keys()
veja artigo Idiomático Python de David Goodger (cópia arquivada).