Recherche de site Web

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 OrderedDict vide 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.
  • popitem supprime les éléments dans l'ordre FIFO. Il accepte un argument booléen last, s'il est défini sur True alors 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éen last, s'il est défini sur False, 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