logo

OrderedDict v Pythonu

An OrderedDict je podtřída slovníku, která si pamatuje pořadí, ve kterém byly klíče poprvé vloženy. Jediný rozdíl mezi dict() a OrderedDict() spočívá v jejich zpracování pořadí klíčů Krajta .

jméno města v usa

OrderedDict vs dict v Pythonu

`OrderedDict` udržuje pořadí, ve kterém jsou klíče přidávány, a zajišťuje, že pořadí je během iterace zachováno. Na rozdíl od toho standardní slovník nezaručuje žádné konkrétní pořadí při iteraci a poskytuje hodnoty v libovolném pořadí. `OrderedDict` se odlišuje tím, že zachovává původní pořadí vložení položek.

Příklad: V tomto příkladu níže uvedený kód demonstruje rozdíl mezi běžným slovníkem (`diktát`) a uspořádaným slovníkem (`OrderedDict`). Nejprve vytiskne položky v běžném slovníku (`d`), kde není zaručeno pořadí vkládání.



Krajta
# 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ýstup:

  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

Zde jsou různé důležité body související s řazením pythonových slovníků, diskutujeme o některých důležitých bodech souvisejících s Pythonský slovník objednávání jsou následující.

  1. Změna hodnoty klíče
  2. Smazání a opětovné vložení
  3. Srovnání rovnosti
  4. OrderedDict Reversal
  5. OrderedDict Popitem Last
  6. Vložení klíče na libovolné pozici
  7. Modul sbírek

Hodnota klíče Změna v pořadí slovníku Python

Pokud se změní hodnota určitého klíče, zůstane pozice klíče v OrderedDict nezměněna. tato metoda Pythonu ukazuje změnu hodnoty spojené s klíčem v OrderedDict.

Příklad: V tomto příkladu níže uvedený kód Pythonu používá OrderedDict k demonstraci změny hodnoty spojené s konkrétním klíčem. Zpočátku vytvoří OrderedDict s klíči „a“ až „d“ a příslušnými hodnotami 1 až 4.

Krajta
# 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ýstup:

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

Porovnání rovnosti v Pythonu Řád slovníku

OrderedDicts v Pythonu lze porovnávat z hlediska rovnosti nejen na základě jejich obsahu, ale také s ohledem na pořadí vkládání. To je užitečné při porovnávání dvou OrderedDictů pro oba páry klíč–hodnota a jejich pořadí.

tlačítko uprostřed css

Příklad : V tomto příkladu kód vytvoří dva OrderedDicts, `od1` a `od2`, s různým uspořádáním párů klíč–hodnota. Potom demonstruje, že pořadí vkládání se bere v úvahu při jejich porovnávání z hlediska rovnosti pomocí operátoru `==`, což má za následek `False`.

Krajta
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ýstup :

False>

OrderedDict Reversal v pořadí slovníku Pythonu

Po vytvoření OrderedDict,reverse>je použita metoda, která obrátí pořadí párů klíč-hodnota. Následující smyčka vytiskne položky v obráceném pořadí, čímž se zvýrazní schopnost OrderedDict usnadnit operace obrácení. OrderedDicts lze zvrátit pomocíreverse>metoda. Tím se obrátí pořadí párů klíč–hodnota ve slovníku.

Příklad: V tomto příkladu níže uvedený kód používá OrderedDict a obrátí své páry klíč–hodnota pomocí metody `reverse`. Následující smyčka vytiskne položky v obráceném pořadí, výsledkem je výstup: `c 3, b 2, a 1`.

Krajta
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ýstup :

 c 3, b 2, a 1>

OrderedDict Popitem() a Pořadí slovníku Python

The popitem()>metoda v OrderedDict lze použít slast>parametr k odstranění a vrácení posledního vloženého páru klíč–hodnota. To je užitečné, když chcete položky zpracovat způsobem poslední dovnitř, první ven. Použití `popitem(last=True)` na OrderedDict by odstranilo a vrátilo naposledy přidanou položku, což poskytuje flexibilitu při správě pořadí prvků.

Příklad: V tomto příkladu níže uvedený kód používá OrderedDict a aplikuje metodu `popitem` s `last=True` k odstranění a uložení posledního vloženého páru klíč–hodnota. Poté vytiskne odstraněnou položku a výsledkem je výstup: `(‚c‘, 3)`.

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

Výstup :

('c', 3)>

Vložení klíče na libovolné pozici v Objednaný slovník Pythonu

OrderedDict umožňuje vložení nového klíče na konkrétní pozici pomocímove_to_end>amove_to_start>metody. Tato flexibilita umožňuje dynamické přeuspořádání klíčů na základě použití nebo priority .

Příklad: V tomto příkladu níže uvedený kód Pythonu používá OrderedDict k vytvoření slovníku s uspořádanými páry klíč-hodnota. Poté použije metodu `move_to_end` k přemístění klíče ‚a‘ na konec a klíče ‚b‘ na začátek.

Krajta
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ýstup :

ctc plná forma
b 2, c 3, a 1>

Smazání a opětovné vložení Objednaný slovník Pythonu

Smazání a opětovné vložení stejného klíče jej posune dozadu jako OrderedDict, ale zachová pořadí vložení. Tato metoda předvádí operace mazání a opětovného vkládání v Python OrderedDict. Nejprve naplní OrderedDict páry klíč–hodnota, odstraní položku, vytiskne aktualizovaný OrderedDict a následně znovu vloží odstraněnou položku, což demonstruje uspořádanou povahu slovníku.

Příklad: V tomto příkladu níže uvedený kód pythonu ukazuje odstranění, opětovné vložení a tisk položek v OrderedDict. Nejprve vytiskne položky OrderedDict, poté vymaže položku s klíčem ‚c‘, vytiskne aktualizovaný OrderedDict a nakonec znovu vloží ‚c‘ s jeho hodnotou a znovu vytiskne OrderedDict.

Krajta
# 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ýstup:

jak se vymanit ze smyčky while java
  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 kolekcí v Pythonu Řád slovníku

OrderedDict je součástí modul sbírek v Pythonu. Poskytuje všechny metody a funkce běžného slovníku a také některé další metody, které využívají řazení položek. Zde je několik příkladů použití OrderedDict v Pythonu:

Příklad: V tomto příkladu níže uvedený kód používá OrderedDict k vytvoření slovníku s uspořádanými páry klíč–hodnota. Přidá novou položku „d“ na konec a vloží položky „e“ a „f“ na začátek, přičemž „e“ se přesune dopředu. Poslední smyčka vytiskne položky slovníku v pořadí, v jakém byly přidány.

Krajta
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ýstup:

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

Časová náročnost:

  • Získat položku (klíč): O(1)
  • Nastavit položku (klíč, hodnota): O(1)
  • Smazat položku (klíč): Na)
  • Opakování: Na)

Prostorová složitost: Na)

OrderedDict je podtřída slovníku v Pythonu, která si pamatuje pořadí, ve kterém byly položky přidány. V běžném slovníku Pythonu není pořadí položek zaručeno a může se měnit mezi různými běhy programu nebo různými verzemi Pythonu. OrderedDict však zachovává pořadí položek tak, jak byly přidány, i když jsou později přidány nové položky nebo jsou změněny stávající položky.

Další úvahy

  • Uspořádaný dict v Pythonu verze 2.7 spotřebovává více paměti než normální dict. To je způsobeno základní implementací Double Linked List pro udržení objednávky. V Pythonu 2.7 Ordered Dict není podtřída dict, je to specializovaný kontejner z modulu kolekce.
  • Počínaje Pythonem 3.7 je zaručeno pořadí vkládání slovníků Pythonu.
  • Objednaný Dict lze použít jako zásobník s pomocí piju funkce. Zkuste implementovat LRU cache s Ordered Dict.