Python OrderedDict
Un OrderedDict en Python 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 ordinaire ne suit pas l'ordre d'insertion. Donc, lors de son 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
OrderedDictvide et y ajouter des éléments. Si nous créons un OrderedDict en passant un argument dict, alors 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 à la fin.
popitemsupprime les éléments dans l'ordre FIFO. Il accepte un argument booléenlast, s'il est défini surTruealors les éléments sont renvoyés dans l'ordre LIFO.- Nous pouvons déplacer un élément au début ou à la fin de l'OrderedDict en utilisant la fonction
move_to_end. Elle accepte un argument booléenlast, s'il est défini surFalse, alors l'élément est déplacé au début du dictionnaire ordonné. - Depuis Python 3.6, l'ordre est conservé pour les arguments de clé passés au constructeur OrderedDict, voir PEP-468.
- Nous pouvons utiliser la fonction
reversed()avec OrderedDict pour itérer les éléments dans l'ordre inverse. - Les tests d'égalité entre les objets OrderedDict sont sensibles à l'ordre et sont implementés comme
list(od1.items())==list(od2.items()). - Les tests d'égalité entre OrderedDict et d'autres objets de type Mapping sont insensibles à l'ordre, comme les dictionnaires ordinaires. Cela permet aux objets OrderedDict d'être substitués partout où un dictionnaire ordinaire est utilisé.
Exemples d'OrderedDict en Python
Examinons quelques exemples de code de Python OrderedDict.
Création d'un objet OrderedDict
from collections import OrderedDict
creating a simple dict
my_dict = {'kiwi': 4, 'apple': 5, 'cat': 3}
creating empty ordered dict
ordered_dict = OrderedDict()
print(ordered_dict)
creating ordered dict from dict
ordered_dict = OrderedDict(my_dict)
print(ordered_dict)
Sortie :
OrderedDict()
OrderedDict([('kiwi', 4), ('apple', 5), ('cat', 3)])
Ajouter, Remplacer, Supprimer des éléments de OrderedDict
adding elements to dict
ordered_dict['dog'] = 3
replacing a dict key value
ordered_dict['kiwi'] = 10
print(ordered_dict)
removing and adding a value
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 dans un OrderedDict
moving apple to end and dog to start
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 d'OrderedDict
pop last item
item = ordered_dict.popitem(True)
print(item)
print(ordered_dict)
Sortie :
('apple', 5)
OrderedDict([('dog', 3), ('cat', 3), ('kiwi', 4)])
Itération inverse d'OrderedDict
reversed iteration
for item in reversed(ordered_dict):
print(item)
Sortie :
kiwi
cat
dog
Exemple de tests d'égalité des OrderedDicts
equality tests
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 d'exemple complet depuis notre dépôt GitHub.
Référence : Documentation Python
