Trier un dictionnaire par clé en Python
Cet article explique comment trier un dictionnaire par sa clé en Python.
1. Utiliser OrderedDict
Les dictionnaires en Python ne sont pas ordonnés avant la version 3.7. Cela signifie que même si vous triez le dictionnaire, vous ne pouvez pas le stocker d'une manière qui préserve l'ordre.
L'idée est de passer les éléments du dictionnaire au sorted()
fonction, qui renvoie une liste triée de paires clé-valeur. Ensuite, vous insérez les entrées du dictionnaire trié dans un OrderedDict
, qui mémorise l'ordre d'insertion.
1 2 3 4 5 6 7 8 9 10 11 |
import collections if __name__ == '__main__': d = {'one': 1, 'two': 2, 'three': 3, 'four': 4} sortedOrderedDict = collections.OrderedDict(sorted(d.items())) # OrderedDict([('four', 4), ('one', 1), ('three', 3), ('two', 2)]) print(sortedOrderedDict) |
2.Python 3.7+
Avec Python 3.7 ou CPython 3.6+, l'ordre du dictionnaire est le même que l'ordre d'insertion. Vous pouvez voir ce comportement ci-dessous :
1 2 3 4 5 6 7 8 9 |
if __name__ == '__main__': d = {'one': 1, 'two': 2, 'three': 3, 'four': 4} sortedDict = dict(sorted(d.items())) # {'four': 4, 'one': 1, 'three': 3, 'two': 2} print(sortedDict) |
Pour le trier dans l'ordre inverse, vous pouvez passer le reverse
argument comme True
:
1 2 3 4 5 6 7 8 9 |
if __name__ == '__main__': d = {'one': 1, 'two': 2, 'three': 3, 'four': 4} sortedDict = dict(sorted(d.items(), reverse=True)) # {'two': 2, 'three': 3, 'one': 1, 'four': 4} print(sortedDict) |
3. Utilisation json.dumps()
fonction
Une autre option est de passer votre dictionnaire au json.dumps()
fonction avec sort_keys
argument comme True
. Notez que cela renvoie la représentation sous forme de string d'un dictionnaire trié.
1 2 3 4 5 6 7 8 9 |
import json if __name__ == '__main__': d = {'one': 1, 'two': 2, 'three': 3, 'four': 4} # {"four": 4, "one": 1, "three": 3, "two": 2} print(json.dumps(d, sort_keys=True)) |
4. Utilisation pprint.pprint()
fonction
Pour imprimer la représentation triée d'un dictionnaire, vous pouvez utiliser la commande pprint.pprint()
fonction, qui imprime le dictionnaire dans l'ordre des clés triées.
1 2 3 4 5 6 7 8 9 |
import pprint if __name__ == '__main__': d = {'one': 1, 'two': 2, 'three': 3, 'four': 4} # {'four': 4, 'one': 1, 'three': 3, 'two': 2} pprint.pprint(d) |
Il s'agit de trier un dictionnaire par clé en Python.
Regarde aussi: