412 votes

Dictionnaire Python : sont keys() et valeurs() toujours le même ordre ?

Il ressemble à la liste retournée par et les méthodes d’un dictionnaire sont toujours un mappage 1 à 1 (en supposant que le dictionnaire n’est pas modifié entre l’appel aux 2 méthodes).

Par exemple :

Si vous ne modifiez pas le dictionnaire entre appel et en appelant , est il faux de présumer la boucle ci-dessus affichera toujours vrai ? Je ne pouvais pas trouver toute la documentation confirmant cela.

460voto

nosklo Points 75862

Trouvé ceci :

Si , , , , , et sont appelées sans aucune modification intervenante dans le dictionnaire, les listes correspondra directement.

Sur la documentation 2.x.

104voto

Alex Martelli Points 330805

Oui, ce que vous avez observé, c’est en effet une propriété garantie--keys(), values() et items() retournent listes dans ordre congruente si le dict n’est pas altérée. iterkeys() & c également itérer dans le même ordre que les listes correspondantes.

51voto

Bjorn Tipling Points 16243

Oui c’est garanti en python 2.x:

Si les clés, valeurs et points de vues sont itérés sans aucune modification intervenante dans le dictionnaire, l’ordre des éléments correspondra directement.

5voto

sykora Points 30290

Selon http://docs.python.org/dev/py3k/library/stdtypes.html#dictionary-view-objects , les méthodes keys(), values() et items() d’une dict retournera des itérateurs correspondantes dont commandes correspondent. Cependant, je suis incapable de trouver une référence à la documentation officielle pour python 2.x pour la même chose.

Alors autant que je sache, la réponse est oui, mais seulement en python 3.0 +

4voto

Koen Bok Points 1523

Pour ce que ça vaut, certains code de lourd production utilisé que j’ai écrit est basé sur cette hypothèse et j’ai jamais eu de problème avec elle. Je sais que cela ne rend pas vrai si  :-)

Si vous ne voulez pas prendre le risque, j’emploierais iteritems() si vous le pouvez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X