9
votes

En utilisant .iteritems () à itérer la clé de la clé, la valeur dans le dictionnaire Python

Remarque: j'ai Lisez ce poste et la réponse de Alex Martelli , mais je ne comprends pas vraiment sa réponse. C'est un peu au-delà de ma compréhension actuelle. Je voudrais aider à mieux comprendre.

Je comprends que lorsque vous essayez le suivant pour la boucle: p> xxx pré>

vous obtenez: p>

for key in dict:
    print key 


0 commentaires

4 Réponses :


8
votes

Python a une fonctionnalité appelée déballage itérable. Lorsque vous faites xxx

python suppose chose est un tuple ou une liste ou quelque chose avec 2 éléments, et il attribue les premier et second éléments à A et b . Cela fonctionne également dans un pour boucle: xxx

est équivalent à xxx

sauf ne crée pas que c variable.

Cela signifie que si vous faites xxx

python ne peut pas regarder le fait que vous avez dit k, v au lieu de k et donnez des éléments au lieu des clés, car les touches sont peut-être 2-tuples. Il doit parcourir les clés et essayer de déballer chaque clé dans les variables k et V .


0 commentaires

11
votes

L'autre réponse explique bien. Mais voici quelques illustrations supplémentaires pour la manière dont il se comporte, en montrant des cas où cela fonctionne sans erreur (vous pouvez donc voir quelque chose): XXX

La boucle passe par les touches (1 , 2) et (4,5) et depuis ces tunples de taille 2, ils peuvent être affectés à k et v .

fonctionne aussi avec des cordes, tant qu'ils ont exactement deux caractères: xxx

Je suppose dans votre cas Quelque chose comme ça? xxx

ici, la clé "ABC" est un triple et donc Python se plaint d'essayer de le décompresser à deux variables. >


4 commentaires

Bien que cela soit correct, ce n'est pas réellement utile à l'OP, compte tenu du contexte de la question.


J'espère que est utile en illustrant le comportement avec quelques exemples, en particulier celui qui entraîne réellement le Revenu ValueError . J'ajoute plus à ma réponse pour ça ...


@Dougr. Comment est-ce maintenant?


Beaucoup mieux. Noté A +1.



0
votes

Tout en utilisant pour xx dans xx code>, vous utilisez réellement un itérateur pour iTerates the XX, et XX doit être démontré. Vous pouvez utiliser la fonction iter code> pour obtenir un itérateur, comme xxx pré>

et en utilisant suivant code> pour accéder aux éléments. P>

k, v = 'a'


0 commentaires

0
votes

dans Python 2.7.6 Il semble que vous souhaitiez vérifier les sous-projets du dictionnaire avec dict.has_key (nom_hamis) .


0 commentaires