Believemy logo purple

Tout sur OrderedDict en Python

Un OrderedDict est un dictionnaire qui garde l'ordre d'insertion des éléments.
Believemy logo

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 :

PYTHON
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).

PYTHON
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.
PYTHON
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.

Aspectdict (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é principaleUn peu toutCas 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 !).

Découvrez notre glossaire Python

Parcourez les termes et définitions les plus couramment utilisés dans le domaine du développement avec Python.