Dictionnaire itération - pour dict vs pour dict.items ()

Quand on itère sur le dictionnaire ci-dessous, à chaque itération retourne(correctement) une clé,valeur paire

for key, value in dict.items():
    print "%s key has the value %s" % (key, value)

'some key' clé a la valeur 'some value' (répété toutefois de nombreuses fois, il y a un k,v paire)

Ci-dessus fait sens pour moi, mais si nous le faisons:

for key in dict.items():
    print "%s key has the value %s" % (key, value)

("some key", "some value") a la valeur "some value" (la gauche tuple va itérer sur chaque valeur de la clé de la paire et le droit de la valeur de simplement rester à la première valeur dans le dict et répétition)

Nous finissons par arriver chaque k,v paire retournée dans la première %s (clé) et le 2ème %s (valeur) ne sont pas parcourir, elle retourne la première valeur dans le dict pour chaque itération de la boucle for.

Je comprends que si vous itérer avec seulement for key in dict alors vous êtes une itération sur les touches seulement. Ici, puisque nous sommes en évoluant d'un ensemble de n-uplets (en utilisant dict.items()) uniquement avec la clé dans la boucle, la boucle doit s'exécuter pour le même nombre de fois que le premier exemple, car il y a autant de touches que la clé,des paires de valeurs.

Ce que je vais avoir du mal à saisir est pourquoi python vous donne le n-uplet entier dans le deuxième exemple pour key.


Merci pour l'aide de tous -- je voudrais ajouter une question à l'ensemble.

for a,a in dict.items():
    print a

Pourquoi le print ci-dessus la valeur, et si je print a,a - de toute évidence, les deux valeurs sont imprimées deux fois. Si j'avais tapé for a,b je serais itération (key,value) paires et je voudrais donc logiquement penser que je suis maintenant une itération sur (key,key) paires et serait donc la touche d'impression plutôt que de valeur. Désolé pour les questions de base, juste à jouer autour de l'interprète et à essayer de comprendre des choses.

source d'informationauteur Solaxun