web-dev-qa-db-fra.com

Itérer sur le dictionnaire

Les deux configurations utilisant print(i, j) et print(i) renvoient le même résultat. Existe-t-il des cas où Devrait être utilisé par-dessus l’autre ou est-il correct de les utiliser indifféremment?

desc = {'city': 'Monowi', 'state': 'Nebraska', 'county':'Boyd', 'pop': 1}

for i, j in desc.items():
 print(i, j)

for i in desc.items():
 print(i)

for i, j in desc.items():
 print(i, j)[1]

for i in desc.items():
 print(i)[1]
3
ZrSiO4

Les deux sont différents si vous supprimez les parenthèses, car vous utilisez python 2X

desc = {'city': 'Monowi', 'state': 'Nebraska', 'county':'Boyd', 'pop': 1}

for i, j in desc.items():
 print i, j 

for i in desc.items():
 print i

sortie

county Boyd
city Monowi
state Nebraska
pop 1
('county', 'Boyd')
('city', 'Monowi')
('state', 'Nebraska')
('pop', 1)
7
Artier

En Python 3, print(i, j) et print(i) ne pas renvoie le même résultat. 

print(i, j) affiche la clé i suivie de sa valeur j

print(i) imprime un tuple contenant la clé du dictionnaire suivie de sa valeur

1
A.B.

items() renvoie un objet de vue qui vous permet de parcourir les tuples (key, value). Donc, fondamentalement, vous pouvez simplement les manipuler comme si vous utilisiez des n-uplets. Le document peut aider:

iter (dictview) Renvoie un itérateur sur les clés, les valeurs ou les éléments (représentés par des nuplets> de (clé, valeur)) dans le dictionnaire.

De plus, je pense que print(i, j)[1] entraînerait une erreur dans Python 3 puisque print(i, j) renvoie None.

0
PJ.Hades