Python OrderedDict est une sous-classe de dict qui maintient l’ordre d’insertion des éléments. Lorsque nous itérons sur un OrderedDict, les éléments sont renvoyés dans l’ordre où ils ont été insérés. Un dictionnaire régulier ne suit pas l’ordre d’insertion. Ainsi, lors de l’itération, les éléments sont renvoyés dans un ordre arbitraire. Lorsque nous voulons nous assurer que les éléments sont renvoyés dans l’ordre où ils ont été insérés, nous pouvons utiliser OrderedDict.
Python OrderedDict
- OrderedDict fait partie du module collections de Python.
- Nous pouvons créer un
OrderedDict
vide et y ajouter des éléments. Si nous créons un OrderedDict en passant un argument de type dict, l’ordre peut être perdu car dict ne maintient pas l’ordre d’insertion. - Si un élément est écrasé dans l’OrderedDict, sa position est maintenue.
- Si un élément est supprimé puis ajouté à nouveau, il se déplace en dernier.
- La méthode
popitem
d’OrderedDict supprime les éléments dans l’ordre FIFO. Elle accepte un argument booléenlast
, s’il est défini surTrue
, les éléments sont renvoyés dans l’ordre LIFO. - Nous pouvons déplacer un élément au début ou à la fin de OrderedDict en utilisant la fonction
move_to_end
. Elle accepte un argument booléenlast
, si celui-ci est défini surFalse
, alors l’élément est déplacé au début du dictionnaire ordonné. - À partir de Python 3.6, l’ordre est conservé pour les arguments de mot-clé passés au constructeur OrderedDict, voir PEP-468.
- Nous pouvons utiliser la fonction
reversed()
avec OrderedDict pour itérer sur les éléments dans l’ordre inverse. - Les tests d’égalité entre les objets OrderedDict sont sensibles à l’ordre et sont implémentés comme
list(od1.items())==list(od2.items())
. - Les tests d’égalité entre OrderedDict et d’autres objets de mappage ne sont pas sensibles à l’ordre comme les dictionnaires classiques. Cela permet aux objets OrderedDict d’être substitués partout où un dictionnaire classique est utilisé.
Exemples de OrderedDict en Python
Jetons un coup d’œil à quelques exemples de code de OrderedDict en Python.
Création d’un objet OrderedDict
from collections import OrderedDict
# création d'un dict simple
my_dict = {'kiwi': 4, 'apple': 5, 'cat': 3}
# création d'un OrderedDict vide
ordered_dict = OrderedDict()
print(ordered_dict)
# création d'un OrderedDict à partir d'un dict
ordered_dict = OrderedDict(my_dict)
print(ordered_dict)
Sortie :
OrderedDict()
OrderedDict([('kiwi', 4), ('apple', 5), ('cat', 3)])
Ajout, remplacement, suppression d’éléments dans OrderedDict
# ajout d'éléments au dictionnaire
ordered_dict['dog'] = 3
# remplacement de la valeur d'une clé dans le dictionnaire
ordered_dict['kiwi'] = 10
print(ordered_dict)
# suppression et ajout d'une valeur
ordered_dict.pop('kiwi')
print(ordered_dict)
ordered_dict['kiwi'] = 4
print(ordered_dict)
Sortie :
OrderedDict([('kiwi', 10), ('apple', 5), ('cat', 3), ('dog', 3)])
OrderedDict([('apple', 5), ('cat', 3), ('dog', 3)])
OrderedDict([('apple', 5), ('cat', 3), ('dog', 3), ('kiwi', 4)])
Exemple de move_to_end pour OrderedDict
# déplacement de la clé "apple" à la fin et de la clé "dog" au début
ordered_dict.move_to_end('apple')
ordered_dict.move_to_end('dog', False)
print(ordered_dict)
Sortie :
OrderedDict([('dog', 3), ('cat', 3), ('kiwi', 4), ('apple', 5)])
Exemple de popitem pour OrderedDict
# retirer le dernier élément
item = ordered_dict.popitem(True)
print(item)
print(ordered_dict)
Sortie :
('apple', 5)
OrderedDict([('dog', 3), ('cat', 3), ('kiwi', 4)])
Itération inversée pour OrderedDict
# itération inversée
for item in reversed(ordered_dict):
print(item)
Sortie :
kiwi
cat
dog
Exemple de tests d’égalité de OrderedDict
# tests d'égalité
d1 = {'a': 'A', 'b': 'B'}
d2 = {'b': 'B', 'a': 'A'}
od1 = OrderedDict({'a': 'A', 'b': 'B'})
od2 = OrderedDict({'b': 'B', 'a': 'A'})
print(d1 == d2)
print(od1 == od2)
print(d1 == od1)
Sortie :
True
False
True
Vous pouvez télécharger le code complet de l’exemple depuis notre Dépôt GitHub.
Référence : Python Docs
Source:
https://www.digitalocean.com/community/tutorials/python-ordereddict