logo

OrderedDict în Python

Un OrderedDict este o subclasă de dicționar care își amintește ordinea în care au fost introduse pentru prima dată cheile. Singura diferență între dict() și OrderedDict() constă în gestionarea ordinii cheilor în Piton .

OrderedDict vs dict în Python

`OrderedDict` menține secvența în care sunt adăugate cheile, asigurându-se că ordinea este păstrată în timpul iterației. În schimb, un dicționar standard nu garantează nicio ordine specifică atunci când este iterat, oferind valori într-o secvență arbitrară. `OrderedDict` se distinge prin păstrarea ordinii inițiale de inserare a articolelor.



Exemplu: În acest exemplu, codul de mai jos demonstrează diferența dintre un dicționar obișnuit (`dict`) și un dicționar ordonat (`OrderedDict`). Mai întâi tipărește articolele într-un dicționar obișnuit (`d`) unde ordinea de inserare nu este garantată.

Piton
# 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)>

Ieșire:

  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>

Dicţionar Python Ordered

Există mai multe puncte importante legate de ordonarea dicționarului python aici, discutăm câteva puncte importante legate de Dicționar Python ordonând cei care urmează.



  1. Modificare valoare cheie
  2. Ștergerea și reinserarea
  3. Comparație de egalitate
  4. Inversare ordonată
  5. OrderedDict Popitem Last
  6. Inserarea cheii în poziție arbitrară
  7. Modulul Colecții

Valoarea cheie Modificare în Python Dictionary Order

Dacă valoarea unei anumite chei este schimbată, poziția cheii rămâne neschimbată în OrderedDict. această metodă Python demonstrează schimbarea valorii asociate cu o cheie într-un OrderedDict.

Exemplu: În acest exemplu, codul Python de mai jos utilizează un OrderedDict pentru a demonstra modificarea valorii asociate cu o anumită cheie. Inițial, creează un OrderedDict cu cheile „a” până la „d” și valorile respective de la 1 la 4.

Piton
# 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)>

Ieșire:



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

Comparație de egalitate în Python Dicţionar Order

OrderedDicts în Python poate fi comparat pentru egalitate nu numai pe baza conținutului lor, ci și luând în considerare ordinea de inserare. Acest lucru este util când se compară două OrderedDicts pentru ambele perechi cheie-valoare și ordinea acestora.

Exemplu: În acest exemplu, codul creează două OrderedDicts, `od1` și `od2`, cu ordine diferite ale perechilor cheie-valoare. Apoi demonstrează că ordinea de inserare este luată în considerare atunci când le comparăm pentru egalitate folosind operatorul `==`, rezultând `False`.

Piton
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)>

Ieșire:

False>

Inversare ordonată în dicţionar Python Order

După crearea unui OrderedDict,reverse>se aplică metoda, care inversează ordinea perechilor cheie-valoare. Bucla ulterioară tipărește articolele în ordine inversă, evidențiind capacitatea OrderedDict de a facilita operațiunile de inversare. OrderedDicts poate fi inversat folosindreverse>metodă. Aceasta inversează ordinea perechilor cheie-valoare din dicționar.

Exemplu: În acest exemplu, codul de mai jos folosește un OrderedDict și își inversează perechile cheie-valoare folosind metoda „reverse”. Bucla ulterioară tipărește articolele în ordine inversă, rezultând rezultatul: `c 3, b 2, a 1`.

Piton
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)>

Ieșire:

 c 3, b 2, a 1>

OrderedDict Popitem() și Dicţionar Python Order

The popitem()>metodă în OrderedDict poate fi folosit culast>parametru pentru a elimina și a returna ultima pereche cheie-valoare inserată. Acest lucru este util atunci când doriți să procesați articolele într-o manieră ultimul intrat, primul ieșit. Utilizarea `popitem(last=True)` pe un OrderedDict ar elimina și returna cel mai recent element adăugat, oferind flexibilitate în gestionarea ordinii elementelor.

Exemplu: În acest exemplu, codul de mai jos folosește un OrderedDict și aplică metoda `popitem` cu `last=True` pentru a elimina și stoca ultima pereche cheie-valoare inserată. Apoi tipărește elementul eliminat, rezultând rezultatul: `('c', 3)`.

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

Ieșire:

('c', 3)>

Inserarea cheii în poziție arbitrară în Dicţionar Python Ordered

OrderedDict permite inserarea unei chei noi într-o anumită poziție folosindmove_to_end>șimove_to_start>metode. Această flexibilitate permite reordonarea dinamică a cheilor în funcție de utilizare sau prioritate .

Exemplu: În acest exemplu, codul Python de mai jos folosește un OrderedDict pentru a crea un dicționar cu perechi cheie-valoare ordonate. Apoi folosește metoda „move_to_end” pentru a repoziționa tasta „a” la sfârșit și tasta „b” la început.

Piton
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)>

Ieșire:

b 2, c 3, a 1>

Ștergerea și reinserarea în Dicţionar Python Ordered

Ștergerea și reintroducerea aceleiași chei o va împinge în spate, deoarece OrderedDict menține ordinea de inserare. Această metodă prezintă operațiunile de ștergere și reinserare într-un Python OrderedDict. Inițial, populează OrderedDict cu perechi cheie-valoare, șterge o intrare, tipărește OrderedDict actualizat și, ulterior, reinserează intrarea ștearsă, demonstrând natura ordonată a dicționarului.

Exemplu: În acest exemplu, codul python de mai jos demonstrează ștergerea, reinserarea și imprimarea articolelor într-un OrderedDict. Mai întâi tipărește articolele OrderedDict, apoi șterge intrarea cu tasta „c”, tipărește OrderedDict actualizat și, în final, reintroduce „c” cu valoarea sa, imprimând din nou OrderedDict.

Piton
# 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)>

Ieșire:

  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>

Modulul de colecții în Python Dicţionar Order

OrderedDict face parte din modul colecții în Python. Oferă toate metodele și funcționalitatea unui dicționar obișnuit, precum și câteva metode suplimentare care profită de ordonarea articolelor. Iată câteva exemple de utilizare a OrderedDict în Python:

Exemplu: În acest exemplu, codul de mai jos folosește un OrderedDict pentru a crea un dicționar cu perechi cheie-valoare ordonate. Adaugă un nou element „d” la sfârșit și inserează elementele „e” și „f” la început, „e” fiind mutat în față. Bucla finală tipărește elementele din dicționar în ordinea în care au fost adăugate.

Piton
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)>

Ieșire:

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

Complexitatea timpului:

tostring java
  • Obține articol (cheie): O(1)
  • Setare articol (cheie, valoare): O(1)
  • Ștergeți elementul (cheia): Pe)
  • Repetare: Pe)

Complexitatea spațiului: Pe)

OrderedDict este o subclasă de dicționar în Python care își amintește ordinea în care au fost adăugate elementele. Într-un dicționar Python obișnuit, ordinea elementelor nu este garantată și se poate schimba între diferite rulări ale programului sau diferite versiuni de Python. Cu toate acestea, un OrderedDict păstrează ordinea articolelor așa cum au fost adăugate, chiar dacă articolele noi sunt adăugate ulterior sau elementele existente sunt modificate.

Alte considerații

  • Dict ordonat în versiunea Python 2.7 consumă mai multă memorie decât dict normal. Acest lucru se datorează implementării de bază a listei dublu legate pentru menținerea comenzii. În Python 2.7 Ordered Dict nu este o subclasă dict, este un container specializat din modulul de colecții.
  • Începând de la Python 3.7, ordinea de inserare a dicționarelor Python este garantată.
  • Ordered Dict poate fi folosit ca stivă cu ajutorul Eu beau funcţie. Încercați să implementați memoria cache LRU cu Ordered Dict.