Code:
d = {'a': 0, 'b': 1, 'c': 2}
l = d.keys()
print l
Cela imprime ['a', 'c', 'b']
. Je ne sais pas comment 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. Le bon ordre créerait bien sûr la liste ['a', 'b', 'c']
.
python
dictionary
rectangle
la source
la source
Réponses:
Vous pouvez utiliser OrderedDict (nécessite Python 2.7) ou supérieur.
Notez également que
OrderedDict({'a': 1, 'b':2, 'c':3})
cela ne fonctionnera pas car le quedict
vous créez avec{...}
a déjà oublié l'ordre des éléments. Au lieu de cela, vous souhaitez utiliserOrderedDict([('a', 1), ('b', 2), ('c', 3)])
.Comme mentionné dans la documentation, pour les versions inférieures à Python 2.7, vous pouvez utiliser cette recette.
la source
Python 3.7+
Dans Python 3.7.0, la nature de préservation de l'ordre d'insertion des
dict
objets a été déclarée comme faisant partie officielle de la spécification du langage Python. Par conséquent, vous pouvez en dépendre.Python 3.6 (CPython)
Depuis Python 3.6, pour l'implémentation CPython de Python, les dictionnaires maintiennent l'ordre d'insertion par défaut. Ceci est cependant considéré comme un détail de mise en œuvre; vous devez toujours l'utiliser
collections.OrderedDict
si vous voulez un ordre d'insertion garanti dans d'autres implémentations de Python.Python> = 2,7 et <3,6
Utilisez la
collections.OrderedDict
classe lorsque vous avez besoin d'undict
qui se souvient de l'ordre des éléments insérés.la source
Utilisez la fonction triée , qui trie l'itérable passé.
La
.keys()
méthode renvoie les clés dans un ordre arbitraire.la source
Depuis 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, appliquez-lui simplement la fonction sorted ())."
la source
Triez simplement la liste lorsque vous souhaitez l'utiliser.
la source
Bien que l'ordre n'ait pas d'importance car le dictionnaire est hashmap. Cela dépend de l'ordre dans lequel il est inséré:
sortie:
pour la chaîne abbc, les clés sont dict_keys (['a', 'b', 'c'])
pour la chaîne cbab, les clés sont dict_keys (['c', 'b', 'a'])
la source