An UžsakytasDiktas yra žodyno poklasis, kuris prisimena eiliškumą, kuriuo klavišai buvo pirmą kartą įterpti. Vienintelis skirtumas tarp diktuoti () ir OrderedDict() yra jų raktų tvarkos tvarkymas Python .
OrderedDict vs dict Python
„OrderedDict“ palaiko raktų pridėjimo seką, užtikrinant, kad tvarka būtų išsaugota iteracijos metu. Priešingai, standartinis žodynas negarantuoja jokios konkrečios tvarkos, kai kartojamas, pateikdamas reikšmes savavališka seka. „OrderedDict“ išsiskiria tuo, kad išlaiko pradinę elementų įterpimo tvarką.
Pavyzdys: Šiame pavyzdyje toliau pateiktas kodas parodo skirtumą tarp įprasto žodyno („dict“) ir užsakyto žodyno („OrderedDict“). Pirmiausia išspausdinami įprasto žodyno („d“) elementai, kur įterpimo tvarka negarantuojama.
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)> Išvestis:
java masyvas
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>
Python žodynas užsakytas
Čia yra įvairių svarbių punktų, susijusių su Python žodyno tvarkymu, mes aptariame keletą svarbių dalykų, susijusių su Python žodynas užsakymas yra toks.
- Pagrindinės reikšmės keitimas
- Ištrynimas ir įterpimas iš naujo
- Lygybės palyginimas
- Užsakytas Dikto atšaukimas
- OrderedDict Popitem Last
- Rakto įdėjimas savavališkoje padėtyje
- Kolekcijos modulis
Pagrindinė reikšmė Python žodyno tvarkos pakeitimas
Jei pakeičiama tam tikro rakto reikšmė, rakto padėtis OrderedDict lieka nepakitusi. šis Python metodas parodo su raktu susietos reikšmės keitimą OrderedDict.
Pavyzdys : Šiame pavyzdyje toliau pateiktas Python kodas naudoja OrderedDict, kad parodytų su konkrečiu raktu susietos vertės keitimą. Iš pradžių sukuriamas OrderedDict su klavišais „a“ iki „d“ ir atitinkamomis reikšmėmis nuo 1 iki 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)> Išvestis:
Before: a 1 b 2 c 3 d 4 After: a 1 b 2 c 5 d 4>
Lygybės palyginimas Python Žodyno tvarka
„Python“ „OrderedDicts“ gali būti lyginami ne tik pagal jų turinį, bet ir atsižvelgiant į įterpimo tvarką. Tai naudinga lyginant du „OrderedDicts“ abiem raktų-reikšmių poroms ir jų tvarkai.
Pavyzdys : šiame pavyzdyje kodas sukuria du OrderedDicts, „od1“ ir „od2“, su skirtingu raktų ir reikšmių porų išdėstymu. Tada parodoma, kad įterpimo tvarka atsižvelgiama lyginant juos su lygybe naudojant operatorių „==“, todėl gaunama „False“.
java int į eilutę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)> Išvestis:
False>
Užsakytas Dikto atšaukimas Python žodyno tvarka
Sukūrę OrderedDict,reverse>taikomas metodas, kuris pakeičia raktų ir reikšmių porų tvarką. Vėlesnė kilpa spausdina elementus atvirkštine tvarka, pabrėždama OrderedDict galimybę palengvinti atšaukimo operacijas. OrderedDicts gali būti atšauktas naudojantreverse>metodas. Tai pakeičia raktų ir reikšmių porų tvarką žodyne.
Pavyzdys : Šiame pavyzdyje toliau pateiktas kodas naudoja OrderedDict ir apverčia jo rakto-reikšmių poras naudodamas „atvirkštinio“ metodą. Tolesnė kilpa spausdina elementus atvirkštine tvarka, todėl gaunama išvestis: „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)> Išvestis:
c 3, b 2, a 1>
UžsakytaDict Popitem() ir Python žodyno tvarka
The popitem()>metodas „OrderedDict“ gali būti naudojamas sulast>parametrą, kad pašalintumėte ir grąžintumėte paskutinę įterptą rakto ir vertės porą. Tai naudinga, kai norite apdoroti elementus „paskutinis įvežimas, pirmasis išleidimas“. Naudojant „popitem(last=True)“ „OrderedDict“ būtų pašalintas ir grąžintas vėliausiai pridėtas elementas, todėl būtų galima lanksčiai tvarkyti elementų tvarką.
Pavyzdys : Šiame pavyzdyje toliau pateiktas kodas naudoja OrderedDict ir taiko „popitem“ metodą su „last=True“, kad pašalintų ir išsaugotų paskutinę įterptą rakto-reikšmių porą. Tada išspausdinamas pašalintas elementas ir gaunama išvestis: „('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)> Išvestis:
('c', 3)>Rakto įdėjimas savavališkoje padėtyje in Python žodynas užsakytas
„OrderedDict“ leidžia įterpti naują raktą į tam tikrą vietą naudojantmove_to_end>irmove_to_start>metodus. Šis lankstumas leidžia dinamiškai pertvarkyti raktus pagal naudojimą ar prioritetą .
Pavyzdys : Šiame pavyzdyje toliau pateiktas Python kodas naudoja OrderedDict, kad sukurtų žodyną su užsakytomis raktų ir reikšmių poromis. Tada naudojamas metodas „move_to_end“, kad raktas „a“ būtų perkeltas į pabaigą, o „b“ – į pradžią.
junit testų bylosPython
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)> Išvestis:
b 2, c 3, a 1>
Ištrynimas ir įdėjimas iš naujo Python žodynas užsakytas
Ištrynus ir vėl įdėjus tą patį raktą, jis bus nustumtas į galą, kaip ir OrderedDict, tačiau išlaikoma įterpimo tvarka. Šis metodas demonstruoja ištrynimo ir pakartotinio įterpimo operacijas Python OrderedDict. Iš pradžių jis užpildo OrderedDict raktų ir reikšmių poromis, ištrina įrašą, išspausdina atnaujintą OrderedDict, o vėliau iš naujo įterpia ištrintą įrašą, parodydamas žodyno tvarkingumą.
Pavyzdys : Šiame pavyzdyje toliau pateiktas python kodas parodo elementų ištrynimą, įterpimą iš naujo ir spausdinimą OrderedDict. Pirmiausia jis išspausdina OrderedDict elementus, tada ištrina įrašą su klavišu „c“, išspausdina atnaujintą OrderedDict ir galiausiai iš naujo įterpia „c“ su jo verte, spausdindamas OrderedDict dar kartą.
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)> Išvestis:
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>
Kolekcijos modulis Python Žodyno tvarka
OrderedDict yra dalis kolekcijų modulis Python. Jame pateikiami visi įprasto žodyno metodai ir funkcijos, taip pat kai kurie papildomi metodai, kuriais pasinaudojama elementų tvarka. Štai keli „OrderedDict“ naudojimo Python pavyzdžiai:
Pavyzdys : Šiame pavyzdyje toliau pateiktas kodas naudoja OrderedDict, kad sukurtų žodyną su užsakytomis raktų ir reikšmių poromis. Jis prideda naują elementą „d“ prie galo ir įterpia elementus „e“ ir „f“ pradžioje, o „e“ perkeliamas į priekį. Paskutinė kilpa spausdina žodyno elementus tokia tvarka, kokia jie buvo įtraukti.
css komentarasPython
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)> Išvestis:
e 5 a 1 b 2 c 3 d 4 f 6>
Laiko sudėtingumas:
- Gaukite prekę (raktas): O(1)
- Nustatyti elementą (raktas, vertė): O(1)
- Ištrinti elementą (raktą): O(n)
- Iteracija: O(n)
Erdvės sudėtingumas: O(n)
OrderedDict yra Python žodyno poklasis, kuris prisimena elementų pridėjimo tvarką. Įprastame Python žodyne elementų tvarka negarantuojama ir ji gali keistis priklausomai nuo skirtingų programos paleidimo ar skirtingų Python versijų. Tačiau OrderedDict išsaugo elementų tvarką, kaip jie buvo įtraukti, net jei vėliau pridedami nauji elementai arba keičiami esami elementai.
Kiti svarstymai
- Python 2.7 versijoje užsakytas diktas sunaudoja daugiau atminties nei įprastas diktas. Taip yra dėl pagrindinio dvigubai susieto sąrašo diegimo užsakymo išlaikymui. Python 2.7 „Ordered Dict“ nėra dikto poklasis, tai yra specializuotas konteineris iš rinkinių modulio.
- Pradedant nuo Python 3.7, Python žodynų įterpimo tvarka garantuojama.
- „Ordered Dict“ gali būti naudojamas kaip krūva su pagalba aš geriu funkcija. Pabandykite įdiegti LRU talpyklą su Ordered Dict.