Un OrderedDict est un type de dictionnaire qui préserve l’ordre d’insertion des éléments, ce qui n'était pas garanti dans les versions de Python antérieures à 3.7.
Avant Python 3.7, les dictionnaires standards (dict) ne garantissaient pas l’ordre des clés. C’est dans ce contexte qu’est né OrderedDict, via le module collections.
Depuis Python 3.7, l’ordre est conservé même avec dict, mais OrderedDict reste utile dans certains cas spécifiques.
Il permet par exemple :
- de trier des éléments, puis de les stocker dans un ordre précis ;
- de faire des comparaisons strictes sur l’ordre des paires ;
- d’utiliser des opérations spécifiques comme
move_to_end().
Syntaxe de base
Voici comment créer un OrderedDict :
from collections import OrderedDict
od = OrderedDict()
od["a"] = 1
od["b"] = 2
od["c"] = 3
print(od) # OrderedDict([('a', 1), ('b', 2), ('c', 3)])L’ordre d’insertion est respecté, contrairement aux anciens dictionnaires avant Python 3.7.
Les méthodes spécifiques à OrderedDict
Même si un OrderedDict se comporte comme un dictionnaire standard, il propose quelques méthodes uniques liées à la gestion de l’ordre : move_to_end() et popitem().
move_to_end()
Cette méthode permet de déplacer une clé soit à la fin (last=True par défaut), soit au début (last=False).
od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
od.move_to_end('a')
print(od) # OrderedDict([('b', 2), ('c', 3), ('a', 1)])Ceci est très utile pour gérer des files d'attente, des caches ou prioriser des éléments par exemple. 😉
popitem()
De son côté, popitem() supprime et retourne un élément selon son ordre :
last=True: supprime le dernier ;last=False: supprime le premier.
od.popitem(last=False) # Supprime ('a', 1)
OrderedDict vs dict : quelles sont les différences ?
Depuis Python 3.7, les dictionnaires standards préservent l’ordre d’insertion, ce qui a largement réduit le besoin d’utiliser OrderedDict.
Faisons tout de même un comparatif entre deux éléments.
| Aspect | dict (Python >= 3.7) | OrderedDict |
| Ordre conservé | ✅ Oui | ✅ Oui |
| Compatible JSON | ✅ Oui | ✅ Oui |
| Méthode move_to_end() | ❌ Non | ✅ Oui |
| Méthode popitem() | ✅ Oui (mais l'ordre n'est pas contrôlable) | ✅ Oui |
| Utilité principale | Un peu tout | Cas spécifiques |
Finalement, OrderedDict reste utile pour les algorithmes sensibles à l’ordre, comme les LRU cache, parser HTML/XML, ou les structures prioritaires.
Questions fréquentes sur OrderedDict
Voici les questions les plus fréquentes quand on débute avec OrderedDict ! 😋
Est-ce que OrderedDict est encore utile aujourd’hui ?
Oui, surtout si vous utilisez Python < 3.7 ou si vous avez besoin de méthodes spécifiques comme move_to_end() ou popitem(last=False), absentes des dictionnaires classiques.
Est-il plus lent qu’un dict ?
Légèrement, mais c'est vraiment négligeable.
Comment apprendre parfaitement Python ?
Grâce à une formation Python (celle-ci mérite d'être testée !).