An OrderedDict je podrazred slovarja, ki si zapomni vrstni red, v katerem so bili ključi prvič vstavljeni. Edina razlika med dict() in OrderedDict() je v njihovem ravnanju z vrstnim redom ključev v Python .
OrderedDict proti dict v Pythonu
`OrderedDict` vzdržuje zaporedje, v katerem so dodani ključi, in zagotavlja, da se vrstni red ohrani med ponavljanjem. Nasprotno pa standardni slovar ne zagotavlja nobenega posebnega vrstnega reda pri ponavljanju, saj zagotavlja vrednosti v poljubnem zaporedju. `OrderedDict` se razlikuje po tem, da ohranja prvotni vrstni red vstavljanja elementov.
primer: V tem primeru spodnja koda prikazuje razliko med navadnim slovarjem (`dict`) in urejenim slovarjem (`OrderedDict`). Najprej natisne elemente v običajnem slovarju (`d`), kjer vrstni red vstavljanja ni zagotovljen.
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)> Izhod:
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>
Slovar Python je urejen
Tukaj so različne pomembne točke, povezane z urejanjem slovarjev python, razpravljamo o nekaterih pomembnih točkah, povezanih z Slovar Python naročanje tistih, ki sledijo.
hekerska obdelava
- Sprememba ključne vrednosti
- Brisanje in ponovno vstavljanje
- Primerjava enakosti
- Storitev OrderedDict
- OrderedDict Popitem Last
- Vstavljanje ključa na poljubni položaj
- Modul zbirk
Vrednost ključa Sprememba vrstnega reda slovarja Python
Če se vrednost določenega ključa spremeni, položaj ključa ostane nespremenjen v OrderedDict. ta metoda Python prikazuje spreminjanje vrednosti, povezane s ključem v OrderedDict.
Primer: V tem primeru spodnja koda Python uporablja OrderedDict za prikaz spreminjanja vrednosti, povezane z določenim ključem. Na začetku ustvari OrderedDict s tipkami od 'a' do 'd' in ustreznimi vrednostmi od 1 do 4.
niz predmetov v JaviPython
# 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)> Izhod:
Before: a 1 b 2 c 3 d 4 After: a 1 b 2 c 5 d 4>
Primerjava enakosti v Pythonu Vrstni red slovarja
OrderedDicts v Pythonu je mogoče primerjati glede enakosti ne le na podlagi njihove vsebine, temveč tudi glede na vrstni red vstavljanja. To je uporabno pri primerjavi dveh OrderedDicts za oba para ključ-vrednost in njihov vrstni red.
Primer : V tem primeru koda ustvari dva OrderedDicts, `od1` in `od2`, z različnim vrstnim redom parov ključ-vrednost. Nato dokaže, da je vrstni red vstavljanja upoštevan pri njihovi primerjavi za enakost z uporabo operatorja `==`, kar ima za posledico `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)> Izhod:
False>
Storitev OrderedDict v vrstnem redu slovarja Python
Po ustvarjanju OrderedDict, jereverse>uporabljena je metoda, ki obrne vrstni red parov ključ-vrednost. Naslednja zanka natisne elemente v obrnjenem vrstnem redu, kar poudari sposobnost OrderedDict, da olajša operacije razveljavitve. OrderedDicts je mogoče obrniti z uporaboreverse>metoda. To obrne vrstni red parov ključ-vrednost v slovarju.
čakalna vrsta in prednostna čakalna vrsta v Javi
Primer: V tem primeru spodnja koda uporablja OrderedDict in obrne njegove pare ključ-vrednost z metodo `reverse`. Naslednja zanka natisne elemente v obratnem vrstnem redu, rezultat pa je: `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)> Izhod:
c 3, b 2, a 1>
OrderedDict Popitem() in Vrstni red slovarja Python
The popitem()>metoda v OrderedDict se lahko uporablja zlast>parameter za odstranitev in vrnitev zadnjega vstavljenega para ključ-vrednost. To je uporabno, če želite elemente obdelati na način zadnji vstop, prvi ven. Uporaba `popitem(last=True)` na OrderedDict bi odstranila in vrnila zadnji dodani element, kar bi zagotovilo prilagodljivost pri upravljanju vrstnega reda elementov.
Primer: V tem primeru spodnja koda uporablja OrderedDict in uporablja metodo `popitem` z `last=True` za odstranitev in shranjevanje nazadnje vstavljenega para ključ-vrednost. Nato natisne odstranjeni element, rezultat pa je: `('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)> Izhod:
veljavni identifikatorji v Javi
('c', 3)>Vstavljanje ključa na poljubnem položaju v Slovar Python je urejen
OrderedDict omogoča vstavljanje novega ključa na določeno mesto z uporabomove_to_end>inmove_to_start>metode. Ta prilagodljivost omogoča dinamično preurejanje ključev na podlagi uporabe ali prioritete .
Primer: V tem primeru spodnja koda Python uporablja OrderedDict za ustvarjanje slovarja z urejenimi pari ključ-vrednost. Nato uporabi metodo `move_to_end`, da prestavi tipko 'a' na konec in tipko 'b' na začetek.
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)> Izhod:
b 2, c 3, a 1>
Brisanje in ponovno vstavljanje Slovar Python je urejen
Če izbrišete in ponovno vstavite isti ključ, ga boste potisnili nazaj, saj OrderedDict ohranja vrstni red vstavljanja. Ta metoda prikazuje operacije brisanja in ponovnega vstavljanja v Python OrderedDict. Sprva zapolni OrderedDict s pari ključ-vrednost, izbriše vnos, natisne posodobljeni OrderedDict in nato znova vstavi izbrisani vnos, kar dokazuje urejeno naravo slovarja.
Primer: V tem primeru spodnja koda python prikazuje brisanje, ponovno vstavljanje in tiskanje elementov v OrderedDict. Najprej natisne elemente OrderedDict, nato izbriše vnos s tipko 'c', natisne posodobljeni OrderedDict in na koncu znova vstavi 'c' z njegovo vrednostjo, tako da znova natisne OrderedDict.
prenesite youtube video z vlcPython
# 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)> Izhod:
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 zbirk v Pythonu Vrstni red slovarja
OrderedDict je del modul zbirk v Pythonu. Zagotavlja vse metode in funkcionalnost običajnega slovarja ter nekatere dodatne metode, ki izkoriščajo vrstni red elementov. Tukaj je nekaj primerov uporabe OrderedDict v Pythonu:
Primer: V tem primeru spodnja koda uporablja OrderedDict za ustvarjanje slovarja z urejenimi pari ključ-vrednost. Na konec doda nov element „d“ in na začetek vstavi elementa „e“ in „f“, pri čemer je „e“ premaknjen spredaj. Končna zanka natisne slovarske postavke v vrstnem redu, kot so bile dodane.
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)> Izhod:
e 5 a 1 b 2 c 3 d 4 f 6>
Časovna zapletenost:
- Pridobite element (ključ): O(1)
- Nastavite element (ključ, vrednost): O(1)
- Izbriši element (ključ): O(n)
- Ponovitev: O(n)
Kompleksnost prostora: O(n)
OrderedDict je podrazred slovarja v Pythonu, ki si zapomni vrstni red, v katerem so bili elementi dodani. V običajnem slovarju Python vrstni red elementov ni zajamčen in se lahko spreminja med različnimi zagoni programa ali različnimi različicami Pythona. Vendar pa OrderedDict ohrani vrstni red elementov, kot so bili dodani, tudi če so pozneje dodani novi ali so obstoječi elementi spremenjeni.
Drugi premisleki
- Urejen dikt v različici Python 2.7 porabi več pomnilnika kot običajni dikt. To je posledica osnovne implementacije dvojno povezanega seznama za ohranjanje vrstnega reda. V Pythonu 2.7 Ordered Dict ni podrazred dict, je specializiran vsebnik iz modula zbirk.
- Od Pythona 3.7 naprej je zagotovljen vrstni red vstavljanja slovarjev Python.
- Ordered Dict lahko uporabite kot sklad s pomočjo popitem funkcijo. Poskusite implementirati predpomnilnik LRU z Ordered Dict.