Tout sur OrderedDict en Python

Un OrderedDict est un dictionnaire qui garde l'ordre d'insertion des éléments.
3 min de lecture
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)])
Bon à savoir

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 ! 😋

Question

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.

 

Question

Est-il plus lent qu’un dict ?

Légèrement, mais c'est vraiment négligeable.

 

Question

Comment apprendre parfaitement Python ?

Grâce à une formation Python (celle-ci mérite d'être testée !).

Termes connexes

Découvrez notre glossaire Python

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

Partager cet article

Tu veux nous aider ? Fais un lien vers cet article sur tes réseaux ou encore mieux : sur ton site, dans un article ou dans ta newsletter.