Détails
Comment trier un dictionnaire par clé ?
Quelle serait la meilleure façon de passer de {2:3, 1:89, 4:5, 3:0}
à {1:89, 2:3, 3:0, 4:5}
?
J'ai vérifié quelques posts mais ils utilisent tous l'opérateur "sorted" ; qui retourne des tuples.
829
3
Les dictionnaires Python standard ne sont pas ordonnés. Même si vous triiez les paires (clé,valeur), vous ne pourriez pas les stocker dans un
dict
d'une manière qui préserverait l'ordre.Le moyen le plus simple est d'utiliser [
OrderedDict
][1], qui se souvient de l'ordre dans lequel les éléments ont été insérés :Ne vous souciez pas de la façon dont
od
est imprimé, cela fonctionnera comme prévu :Python 3
Pour les utilisateurs de Python 3, il faut utiliser le
.items()
au lieu de.iteritems()
:[1] : http://docs.python.org/library/collections.html#collections.OrderedDict
Les dictionnaires eux-mêmes ne comportent pas d'éléments ordonnés en tant que tels, mais si vous souhaitez les imprimer dans un certain ordre, voici quelques exemples :
En Python 2.4 et supérieur :
donne :
(Python inférieur à 2.4 :).
Source : [http://www.saltycrane.com/blog/2007/09/how-to-sort-python-dictionary-by-keys/][1]
[1] : http://www.saltycrane.com/blog/2007/09/how-to-sort-python-dictionary-by-keys/
Comme d'autres l'ont mentionné, les dictionnaires sont par nature non ordonnés. Cependant, si le problème est simplement de afficher les dictionnaires de manière ordonnée, vous pouvez surcharger la méthode
__str__
dans une sous-classe de dictionnaire, et utiliser cette classe de dictionnaire plutôt que ledict
intégré. Par exemple.Notez que cela ne change rien à la façon dont les clés sont stockées, à l'ordre dans lequel elles reviendront lorsque vous itérerez sur elles, etc., mais seulement à la façon dont elles seront affichées avec
print
ou sur la console python.