140 votes

L'ordre des clés dans les dictionnaires

Code :

d = {'a': 0, 'b': 1, 'c': 2}
l = d.keys()

print l

Cette impression ['a', 'c', 'b'] . Je ne suis pas sûr de la façon dont la méthode keys() détermine l'ordre des mots-clés dans l . Cependant, j'aimerais pouvoir récupérer les mots-clés dans le "bon" ordre. L'ordre correct serait bien sûr la liste suivante ['a', 'b', 'c'] .

217voto

eugene y Points 37378

Python 3.7 et plus

En Python 3.7.0 la nature de la préservation de l'ordre d'insertion de dict objets a été déclaré pour être une partie officielle de la spécification du langage Python. Vous pouvez donc vous y fier.

Python 3.6 (CPython)

À partir de Python 3.6, pour l'implémentation CPython de Python, les dictionnaires maintenir l'ordre d'insertion par défaut. Il s'agit cependant d'un détail d'implémentation ; vous devez toujours utiliser la fonction collections.OrderedDict si vous souhaitez que l'ordre d'insertion soit garanti par d'autres implémentations de Python.

Python >=2.7 et <3.6

Utilisez le collections.OrderedDict lorsque vous avez besoin d'une dict que se souvient de l'ordre des éléments insérés.

87voto

abhinav Points 1736

Vous pourriez utiliser OrderedDict (nécessite Python 2.7) ou plus.

Notez également que OrderedDict({'a': 1, 'b':2, 'c':3}) ne fonctionnera pas puisque le dict que vous créez avec {...} a déjà oublié l'ordre des éléments. Au lieu de cela, vous voulez utiliser OrderedDict([('a', 1), ('b', 2), ('c', 3)]) .

Comme mentionné dans la documentation, pour les versions inférieures à Python 2.7, vous pouvez utiliser ce recette.

53voto

Mike Lewis Points 29305
>>> print sorted(d.keys())
['a', 'b', 'c']

Utilisez le fonction de tri qui trie l'itérable transmis.

Le site .keys() renvoie les clés dans un ordre arbitraire.

13voto

De http://docs.python.org/tutorial/datastructures.html :

"La méthode keys() d'un objet dictionnaire renvoie une liste de toutes les clés utilisées dans le dictionnaire, dans un ordre arbitraire (si vous voulez qu'elle soit triée, il suffit de lui appliquer la fonction sorted())."

12voto

Drew Points 1070

Il suffit de trier la liste quand vous voulez l'utiliser.

l = sorted(d.keys())

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