logo

OrdonnéDict en Python

Un OrdonnéDict est une sous-classe de dictionnaire qui mémorise l'ordre dans lequel les clés ont été insérées pour la première fois. La seule différence entre dict() et OrderedDict() réside dans leur gestion de l'ordre des clés dans Python .

OrderedDict contre dict en Python

`OrderedDict` maintient la séquence dans laquelle les clés sont ajoutées, garantissant que l'ordre est préservé pendant l'itération. En revanche, un dictionnaire standard ne garantit aucun ordre spécifique lors de ses itérations, fournissant des valeurs dans un ordre arbitraire. `OrderedDict` se distingue en conservant l'ordre d'insertion d'origine des éléments.



Exemple: Dans cet exemple, le code ci-dessous montre la différence entre un dictionnaire régulier (`dict`) et un dictionnaire ordonné (`OrderedDict`). Il imprime d'abord les éléments dans un dictionnaire régulier (`d`) où l'ordre d'insertion n'est pas garanti.

Python
# A Python program to demonstrate working of OrderedDict from collections import OrderedDict print('This is a Dict:
') d = {} d['a'] = 1 d['b'] = 2 d['c'] = 3 d['d'] = 4 for key, value in d.items(): print(key, value) print('
This is an Ordered Dict:
') od = OrderedDict() od['a'] = 1 od['b'] = 2 od['c'] = 3 od['d'] = 4 for key, value in od.items(): print(key, value)>

Sortir:

  This is a Dict:  a 1  b 2 c 3 d 4   This is an Ordered Dict:  a 1 b 2 c 3 d 4>

Dictionnaire Python commandé

Il y a plusieurs points importants liés à la commande du dictionnaire Python ici, nous discutons de quelques points importants liés à Dictionnaire Python ordonner ceux qui suivent.



  1. Valeur clé Changement
  2. Suppression et réinsertion
  3. Comparaison d'égalité
  4. Inversion de OrderedDict
  5. OrderedDict Popitem Dernier
  6. Insertion de clé à une position arbitraire
  7. Module de recouvrement

Changement de valeur clé dans l'ordre du dictionnaire Python

Si la valeur d'une certaine clé est modifiée, la position de la clé reste inchangée dans OrderedDict. cette méthode Python montre la modification de la valeur associée à une clé dans un OrderedDict.

Exemple : Dans cet exemple, le code Python ci-dessous utilise un OrderedDict pour démontrer la modification de la valeur associée à une clé spécifique. Initialement, il crée un OrderedDict avec les clés « a » à « d » et les valeurs respectives 1 à 4.

Python
# A Python program to demonstrate working of key # value change in OrderedDict from collections import OrderedDict print('Before:
') od = OrderedDict() od['a'] = 1 od['b'] = 2 od['c'] = 3 od['d'] = 4 for key, value in od.items(): print(key, value) print('
After:
') od['c'] = 5 for key, value in od.items(): print(key, value)>

Sortir:



  Before:  a 1 b 2 c 3 d 4   After:  a 1 b 2 c 5 d 4>

Comparaison d'égalité en Python Ordre du dictionnaire

Les OrderedDicts en Python peuvent être comparés pour l'égalité non seulement en fonction de leur contenu, mais également en tenant compte de l'ordre d'insertion. Ceci est utile lors de la comparaison de deux OrderedDicts pour les paires clé-valeur et leur ordre.

Exemple : Dans cet exemple, le code crée deux OrderedDicts, `od1` et `od2`, avec des ordres différents de paires clé-valeur. Il démontre ensuite que l'ordre d'insertion est pris en compte lors de la comparaison de leur égalité à l'aide de l'opérateur `==`, ce qui donne `False`.

Python
from collections import OrderedDict # Create two ordered dictionaries with different orderings od1 = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) od2 = OrderedDict([('c', 3), ('b', 2), ('a', 1)]) # Compare the ordered dictionaries for equality print(od1 == od2)>

Sortir :

False>

Inversion de OrderedDict dans l'ordre du dictionnaire Python

Après avoir créé un OrderedDict, lereverse>La méthode est appliquée, ce qui inverse l'ordre des paires clé-valeur. La boucle suivante imprime les éléments dans l’ordre inversé, mettant en évidence la capacité de OrderedDict à faciliter les opérations d’inversion. Les OrderedDicts peuvent être inversés à l'aide de l'optionreverse>méthode. Cela inverse l'ordre des paires clé-valeur dans le dictionnaire.

Exemple : Dans cet exemple, le code ci-dessous utilise un OrderedDict et inverse ses paires clé-valeur à l'aide de la méthode « reverse ». La boucle suivante imprime les éléments dans l'ordre inversé, ce qui donne le résultat : « c 3, b 2, a 1 ».

Python
from collections import OrderedDict my_dict = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) my_dict.reverse() for key, value in my_dict.items(): print(key, value)>

Sortir :

 c 3, b 2, a 1>

OrderedDict Popitem() et Ordre du dictionnaire Python

Le popitem()>méthode dans OrderedDict peut être utilisé avec lelast>paramètre pour supprimer et renvoyer la dernière paire clé-valeur insérée. Ceci est utile lorsque vous souhaitez traiter les éléments selon le principe du dernier entré, premier sorti. L'utilisation de `popitem(last=True)` sur un OrderedDict supprimerait et renverrait l'élément le plus récemment ajouté, offrant ainsi une flexibilité dans la gestion de l'ordre des éléments.

Exemple : Dans cet exemple, le code ci-dessous utilise un OrderedDict et applique la méthode « popitem » avec « last=True » pour supprimer et stocker la dernière paire clé-valeur insérée. Il imprime ensuite l'élément supprimé, ce qui donne le résultat : `('c', 3)`.

Python
from collections import OrderedDict my_dict = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) last_item = my_dict.popitem(last=True) print(last_item)>

Sortir :

('c', 3)>

Insertion de clé à une position arbitraire dans Dictionnaire Python commandé

OrderedDict permet d'insérer une nouvelle clé à une position spécifique à l'aide dumove_to_end>etmove_to_start>méthodes. Cette flexibilité permet une réorganisation dynamique des clés en fonction de l'utilisation ou de la priorité. .

Exemple : Dans cet exemple, le code Python ci-dessous utilise un OrderedDict pour créer un dictionnaire avec des paires clé-valeur ordonnées. Il utilise ensuite la méthode `move_to_end` pour repositionner la clé « a » à la fin et la clé « b » au début.

Python
from collections import OrderedDict my_dict = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) # Move key 'a' to the end my_dict.move_to_end('a') # Move key 'b' to the beginning my_dict.move_to_end('b', last=False) for key, value in my_dict.items(): print(key, value)>

Sortir :

b 2, c 3, a 1>

Suppression et réinsertion dans Dictionnaire Python commandé

Supprimer et réinsérer la même clé la repoussera vers l'arrière car OrderedDict conserve cependant l'ordre d'insertion. Cette méthode présente les opérations de suppression et de réinsertion dans un Python OrderedDict. Initialement, il remplit le OrderedDict avec des paires clé-valeur, supprime une entrée, imprime le OrderedDict mis à jour, puis réinsère l'entrée supprimée, démontrant la nature ordonnée du dictionnaire.

Exemple : Dans cet exemple, le code python ci-dessous montre la suppression, la réinsertion et l'impression d'éléments dans un OrderedDict. Il imprime d'abord les éléments OrderedDict, puis supprime l'entrée avec la clé « c », imprime le OrderedDict mis à jour et enfin réinsère « c » avec sa valeur, imprimant à nouveau le OrderedDict.

Python
# A Python program to demonstrate working of deletion # re-insertion in OrderedDict from collections import OrderedDict print('Before deleting:
') od = OrderedDict() od['a'] = 1 od['b'] = 2 od['c'] = 3 od['d'] = 4 for key, value in od.items(): print(key, value) print('
After deleting:
') od.pop('c') for key, value in od.items(): print(key, value) print('
After re-inserting:
') od['c'] = 3 for key, value in od.items(): print(key, value)>

Sortir:

  Before deleting:  a 1 b 2 c 3 d 4   After deleting:  a 1 b 2 d 4   After re-inserting:  a 1 b 2 d 4 c 3>

Module de collections en Python Ordre du dictionnaire

OrderedDict fait partie du module de collecte en Python. Il fournit toutes les méthodes et fonctionnalités d'un dictionnaire classique, ainsi que quelques méthodes supplémentaires qui tirent parti de l'ordre des éléments. Voici quelques exemples d’utilisation de OrderedDict en Python :

entier en chaîne

Exemple : Dans cet exemple, le code ci-dessous utilise un OrderedDict pour créer un dictionnaire avec des paires clé-valeur ordonnées. Il ajoute un nouvel élément « d » à la fin et insère les éléments « e » et « f » au début, « e » étant déplacé vers l’avant. La boucle finale imprime les éléments du dictionnaire dans l'ordre dans lequel ils ont été ajoutés.

Python
from collections import OrderedDict # Create an ordered dictionary of key-value pairs my_dict = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) # Add a new item to the end of the dictionary my_dict['d'] = 4 # Add a new item at a specific position in the dictionary # my_dict.update({'e': 5, 'f': 6}) or below my_dict.update([('e', 5), ('f', 6)]) my_dict.move_to_end('e', last=False) # Iterate over the dictionary in the order in which items were added for key, value in my_dict.items(): print(key, value)>

Sortir:

e 5 a 1 b 2 c 3 d 4 f 6>

Complexité temporelle :

  • Obtenir l'article (clé) : O(1)
  • Définir l'élément (clé, valeur) : O(1)
  • Supprimer l'élément (clé) : Sur)
  • Itération: Sur)

Complexité spatiale : Sur)

OrderedDict est une sous-classe de dictionnaire en Python qui mémorise l'ordre dans lequel les éléments ont été ajoutés. Dans un dictionnaire Python classique, l'ordre des éléments n'est pas garanti et peut changer entre les différentes exécutions du programme ou les différentes versions de Python. Cependant, un OrderedDict conserve l'ordre des éléments tels qu'ils ont été ajoutés, même si de nouveaux éléments sont ajoutés ultérieurement ou si des éléments existants sont modifiés.

autres considérations

  • Le dict ordonné dans Python version 2.7 consomme plus de mémoire qu'un dict normal. Cela est dû à l’implémentation sous-jacente de la liste doublement liée pour conserver l’ordre. Dans Python 2.7 Ordered Dict n'est pas une sous-classe dict, c'est un conteneur spécialisé du module collections.
  • À partir de Python 3.7, l'ordre d'insertion des dictionnaires Python est garanti.
  • Ordered Dict peut être utilisé comme une pile à l'aide de je bois fonction. Essayez d'implémenter le cache LRU avec Ordered Dict.