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í.
- Změna hodnoty klíče
- Smazání a opětovné vložení
- Srovnání rovnosti
- OrderedDict Reversal
- OrderedDict Popitem Last
- Vložení klíče na libovolné pozici
- 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.