logo

OrderedDict v Pythone

An OrderedDict je podtrieda slovníka, ktorá si pamätá poradie, v ktorom boli kľúče prvýkrát vložené. Jediný rozdiel medzi dict() a OrderedDict() spočíva v ich spracovaní poradia kľúčov Python .

OrderedDict vs dict v Pythone

`OrderedDict` udržiava poradie, v ktorom sa kľúče pridávajú, čím zaisťuje zachovanie poradia počas iterácie. Na rozdiel od toho štandardný slovník nezaručuje žiadne špecifické poradie pri iterácii, pričom hodnoty poskytuje v ľubovoľnom poradí. `OrderedDict` sa odlišuje zachovaním pôvodného poradia vloženia položiek.



Príklad: V tomto príklade nižšie uvedený kód ukazuje rozdiel medzi bežným slovníkom („diktát“) a usporiadaným slovníkom („OrderedDict“). Najprv vytlačí položky v bežnom slovníku (`d`), kde nie je zaručené poradie vkladania.

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

Výkon:

  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>

Objednaný slovník Pythonu

Tu sú rôzne dôležité body súvisiace s objednávaním pythonového slovníka, diskutujeme o niektorých dôležitých bodoch týkajúcich sa Pythonský slovník objednávanie sú nasledujúce.



  1. Zmena hodnoty kľúča
  2. Vymazanie a opätovné vloženie
  3. Porovnanie rovnosti
  4. OrderedDict Reversal
  5. OrderedDict Popitem Last
  6. Vloženie kľúča na ľubovoľnú pozíciu
  7. Kolekčný modul

Hodnota kľúča Zmena v poradí slovníka Python

Ak sa zmení hodnota určitého kľúča, pozícia kľúča zostane v OrderedDict nezmenená. táto metóda Pythonu demonštruje zmenu hodnoty spojenej s kľúčom v OrderedDict.

Príklad: V tomto príklade nižšie uvedený kód Pythonu používa OrderedDict na demonštráciu zmeny hodnoty spojenej s konkrétnym kľúčom. Spočiatku vytvorí OrderedDict s kľúčmi „a“ až „d“ a príslušnými hodnotami 1 až 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)>

Výkon:



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

Porovnanie rovnosti v Pythone Poradie slovníka

OrderedDicts v Pythone možno porovnávať z hľadiska rovnosti nielen na základe ich obsahu, ale aj vzhľadom na poradie vkladania. To je užitočné pri porovnávaní dvoch OrderedDictov pre oba páry kľúč – hodnota a ich poradie.

Príklad : V tomto príklade kód vytvorí dva OrderedDicts, „od1“ a „od2“, s rôznym usporiadaním párov kľúč – hodnota. Potom demonštruje, že poradie vkladania sa berie do úvahy pri ich porovnávaní z hľadiska rovnosti pomocou operátora „==“, čoho výsledkom je „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)>

Výkon :

False>

OrderedDict Reversal v poradí slovníka Python

Po vytvorení OrderedDict,reverse>použije sa metóda, ktorá obráti poradie párov kľúč – hodnota. Následná slučka vytlačí položky v obrátenom poradí, čím sa zvýrazní schopnosť OrderedDict uľahčiť operácie zvrátenia. OrderedDicts je možné zvrátiť pomocoureverse>metóda. Tým sa obráti poradie párov kľúč – hodnota v slovníku.

Príklad: V tomto príklade kód uvedený nižšie používa OrderedDict a obráti svoje páry kľúč – hodnota pomocou metódy „reverse“. Nasledujúci cyklus vytlačí položky v opačnom poradí, výsledkom čoho je výstup: `c 3, b 2, a 1`.

xd xd význam
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)>

Výkon :

 c 3, b 2, a 1>

OrderedDict Popitem() a Poradie slovníka Python

The popitem()>metóda v OrderedDict možno použiť slast>parameter na odstránenie a vrátenie posledného vloženého páru kľúč – hodnota. Je to užitočné, keď chcete položky spracovať spôsobom „posledný dnu, prvý von“. Použitie `popitem(last=True)` na OrderedDict by odstránilo a vrátilo naposledy pridanú položku, čo poskytuje flexibilitu pri spravovaní poradia prvkov.

Príklad: V tomto príklade kód uvedený nižšie používa OrderedDict a aplikuje metódu `popitem` s `last=True` na odstránenie a uloženie posledného vloženého páru kľúč – hodnota. Potom vytlačí odstránenú položku, výsledkom čoho je výstup: `(‚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)>

Výkon :

('c', 3)>

Vloženie kľúča na ľubovoľnú pozíciu v Objednaný slovník Pythonu

OrderedDict umožňuje vložiť nový kľúč na konkrétnu pozíciu pomocoumove_to_end>amove_to_start>metódy. Táto flexibilita umožňuje dynamickú zmenu poradia kľúčov na základe použitia alebo priority .

Príklad: V tomto príklade nižšie uvedený kód Pythonu používa OrderedDict na vytvorenie slovníka s usporiadanými pármi kľúč – hodnota. Potom použije metódu „presun_to_end“ na premiestnenie kľúča „a“ na koniec a kľúča „b“ na začiatok.

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

Výkon :

b 2, c 3, a 1>

Vymazanie a opätovné vloženie Objednaný slovník Pythonu

Vymazanie a opätovné vloženie toho istého kľúča ho posunie dozadu, pretože OrderedDict zachová poradie vkladania. Táto metóda predstavuje operácie vymazania a opätovného vloženia do Python OrderedDict. Najprv vyplní OrderedDict pármi kľúč – hodnota, vymaže záznam, vytlačí aktualizovaný OrderedDict a následne znova vloží vymazaný záznam, čím demonštruje usporiadaný charakter slovníka.

Príklad: V tomto príklade nižšie uvedený python kód demonštruje vymazanie, opätovné vloženie a tlač položiek v OrderedDict. Najprv vytlačí položky OrderedDict, potom vymaže záznam s kľúčom „c“, vytlačí aktualizovaný OrderedDict a nakoniec znovu vloží „c“ s jeho hodnotou, čím sa znova vytlačí 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)>

Výkon:

  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>

Modul kolekcií v Pythone Poriadok slovníka

OrderedDict je súčasťou modul zbierok v Pythone. Poskytuje všetky metódy a funkcie bežného slovníka, ako aj niektoré ďalšie metódy, ktoré využívajú výhody zoradenia položiek. Tu je niekoľko príkladov použitia OrderedDict v Pythone:

Príklad: V tomto príklade kód uvedený nižšie používa OrderedDict na vytvorenie slovníka s usporiadanými pármi kľúč – hodnota. Pridá novú položku „d“ na koniec a vloží položky „e“ a „f“ na začiatok, pričom „e“ sa presunie dopredu. Posledná slučka vytlačí položky slovníka v poradí, v akom boli pridané.

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

Výkon:

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

Časová zložitosť:

  • Získať položku (kľúč): O(1)
  • Nastaviť položku (kľúč, hodnota): O(1)
  • Odstrániť položku (kľúč): O(n)
  • Iterácia: O(n)

Priestorová zložitosť: O(n)

OrderedDict je podtrieda slovníka v Pythone, ktorá si pamätá poradie, v ktorom boli položky pridané. V bežnom slovníku Pythonu nie je poradie položiek zaručené a môže sa meniť medzi rôznymi spusteniami programu alebo rôznymi verziami Pythonu. OrderedDict však zachováva poradie položiek tak, ako boli pridané, aj keď sa neskôr pridajú nové položky alebo sa zmenia existujúce položky.

Ďalšie úvahy

  • Usporiadaný dict v Pythone verzie 2.7 spotrebuje viac pamäte ako normálny dict. Je to kvôli základnej implementácii Double Linked List na udržanie objednávky. V Pythone 2.7 Ordered Dict nie je podtrieda dict, je to špecializovaný kontajner z modulu kolekcií.
  • Od Pythonu 3.7 je zaručené poradie vkladania slovníkov Pythonu.
  • Objednaný Dict je možné použiť ako zásobník pomocou pijem funkciu. Skúste implementovať vyrovnávaciu pamäť LRU pomocou príkazu Ordered Dict.