An PasūtītsDikts ir vārdnīcas apakšklase, kas atceras secību, kādā atslēgas pirmo reizi tika ievietotas. Vienīgā atšķirība starp dikti () un OrderedDict() ir saistīta ar atslēgu secības apstrādi Python .
OrderedDict vs dict Python
`OrderedDict` uztur secību, kādā tiek pievienotas atslēgas, nodrošinot secības saglabāšanu iterācijas laikā. Turpretim standarta vārdnīca negarantē nekādu noteiktu secību, kad to atkārto, sniedzot vērtības patvaļīgā secībā. 'OrderedDict' izceļas ar to, ka tiek saglabāta sākotnējā vienumu ievietošanas secība.
Piemērs: Šajā piemērā tālāk redzamais kods parāda atšķirību starp parasto vārdnīcu ('dict') un sakārtoto vārdnīcu ('OrderedDict'). Vispirms tas izdrukā vienumus parastajā vārdnīcā (`d`), kur ievietošanas secība netiek garantēta.
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)> Izvade:
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>
Pasūtīta Python vārdnīca
Šeit ir dažādi svarīgi punkti saistībā ar python vārdnīcas pasūtīšanu, mēs apspriežam dažus svarīgus punktus, kas saistīti ar Python vārdnīca to pasūtīšana ir sekojoša.
ātra šķirošana
- Galvenās vērtības maiņa
- Dzēšana un atkārtota ievietošana
- Vienlīdzības salīdzinājums
- PasūtītsDikta apvērsums
- OrderedDict Popitem Last
- Atslēgas ievietošana patvaļīgā pozīcijā
- Kolekciju modulis
Galvenās vērtības maiņa Python vārdnīcas secībā
Ja tiek mainīta noteiktas atslēgas vērtība, atslēgas pozīcija OrderedDict paliek nemainīga. šī Python metode parāda ar atslēgu saistītās vērtības maiņu OrderedDict.
Piemērs : Šajā piemērā tālāk esošajā Python kodā tiek izmantots OrderedDict, lai parādītu ar noteiktu atslēgu saistītās vērtības maiņu. Sākotnēji tas izveido OrderedDict ar taustiņiem “a” līdz “d” un attiecīgajām vērtībām no 1 līdz 4.
javascript paraugsPython
# 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)> Izvade:
Before: a 1 b 2 c 3 d 4 After: a 1 b 2 c 5 d 4>
Vienlīdzības salīdzinājums Python Vārdnīcas pasūtījums
OrderedDicts Python var salīdzināt ar vienlīdzību ne tikai pēc to satura, bet arī ņemot vērā ievietošanas secību. Tas ir noderīgi, salīdzinot divus OrderedDicts abiem atslēgu vērtību pāriem un to secībai.
Piemērs : šajā piemērā kods izveido divus OrderedDicts od1 un od2 ar atšķirīgu atslēgu un vērtību pāru secību. Pēc tam tiek parādīts, ka ievietošanas secība tiek ņemta vērā, salīdzinot tos ar vienlīdzību, izmantojot operatoru ==, kā rezultātā tiek iegūta vērtība '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)> Izvade:
False>
PasūtītsDikta apvērsums Python vārdnīcas secībā
Pēc OrderedDict izveidesreverse>tiek piemērota metode, kas apvērš atslēgu-vērtību pāru secību. Nākamajā cilpā vienumi tiek drukāti apgrieztā secībā, izceļot OrderedDict spēju atvieglot apvērsuma darbības. OrderedDicts var mainīt, izmantojotreverse>metodi. Tādējādi vārdnīcā tiek mainīta atslēgu un vērtību pāru secība.
slēptās lietotnes
Piemērs : Šajā piemērā tālāk norādītais kods izmanto OrderedDict un apvērš tā atslēgu un vērtību pārus, izmantojot apgriezto metodi. Nākamajā cilpā vienumi tiek drukāti apgrieztā secībā, kā rezultātā tiek iegūta šāda izvade: '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)> Izvade:
c 3, b 2, a 1>
PasūtītsDict Popitem() un Python vārdnīcas pasūtījums
The popitem()>metodi sadaļā OrderedDict var izmantot arlast>parametrs, lai noņemtu un atgrieztu pēdējo ievietoto atslēgas vērtību pāri. Tas ir noderīgi, ja vēlaties apstrādāt vienumus kā pēdējo, pirmo izejot. Izmantojot “popitem(last=True)” uz OrderedDict, tiks noņemts un atgriezts pēdējais pievienotais vienums, nodrošinot elastību elementu secības pārvaldībā.
Piemērs : Šajā piemērā tālāk norādītajā kodā tiek izmantots OrderedDict un tiek lietota metode 'popitem' ar 'last=True', lai noņemtu un saglabātu pēdējo ievietoto atslēgu un vērtību pāri. Pēc tam tas izdrukā noņemto vienumu, kā rezultātā tiek iegūta šāda izvade: '('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)> Izvade:
stlc
('c', 3)>Atslēgas ievietošana patvaļīgā pozīcijā iekšā Pasūtīta Python vārdnīca
OrderedDict ļauj ievietot jaunu atslēgu noteiktā vietā, izmantojotmove_to_end>unmove_to_start>metodes. Šī elastība ļauj dinamiski pārkārtot atslēgas, pamatojoties uz lietojumu vai prioritāti .
Piemērs : Šajā piemērā tālāk redzamais Python kods izmanto OrderedDict, lai izveidotu vārdnīcu ar sakārtotiem atslēgu un vērtību pāriem. Pēc tam tiek izmantota metode “move_to_end”, lai pārvietotu taustiņu “a” uz beigām un taustiņu “b” uz sākumu.
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)> Izvade:
b 2, c 3, a 1>
Dzēšana un atkārtota ievietošana Pasūtīta Python vārdnīca
Dzēšot un atkārtoti ievietojot to pašu atslēgu, tā tiks nospiesta aizmugurē, jo OrderedDict saglabā ievietošanas secību. Šī metode parāda dzēšanas un atkārtotas ievietošanas darbības Python OrderedDict. Sākotnēji tas aizpilda OrderedDict ar atslēgu un vērtību pāriem, izdzēš ierakstu, izdrukā atjaunināto OrderedDict un pēc tam atkārtoti ievieto dzēsto ierakstu, parādot vārdnīcas sakārtotību.
Piemērs : Šajā piemērā tālāk redzamais python kods parāda vienumu dzēšanu, atkārtotu ievietošanu un drukāšanu OrderedDict. Tas vispirms izdrukā OrderedDict vienumus, pēc tam izdzēš ierakstu ar taustiņu “c”, izdrukā atjaunināto OrderedDict un visbeidzot atkārtoti ievieto “c” ar tā vērtību, vēlreiz izdrukājot OrderedDict.
java tostring metodePython
# 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)> Izvade:
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>
Kolekciju modulis Python Vārdnīcas pasūtījums
OrderedDict ir daļa no kolekciju modulis programmā Python. Tas nodrošina visas parastās vārdnīcas metodes un funkcionalitāti, kā arī dažas papildu metodes, kas izmanto vienumu pasūtīšanas priekšrocības. Šeit ir daži piemēri par OrderedDict izmantošanu Python:
Piemērs : Šajā piemērā tālāk norādītais kods izmanto OrderedDict, lai izveidotu vārdnīcu ar sakārtotiem atslēgu un vērtību pāriem. Tā beigās pievieno jaunu vienumu “d” un ievieto vienumus “e” un “f” sākumā, un “e” tiek pārvietots uz priekšu. Pēdējā cilpa izdrukā vārdnīcas vienumus to pievienošanas secībā.
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)> Izvade:
e 5 a 1 b 2 c 3 d 4 f 6>
Laika sarežģītība:
- Iegūt preci (atslēga): O(1)
- Iestatīt vienumu (atslēga, vērtība): O(1)
- Dzēst vienumu (atslēgu): O(n)
- Iterācija: O(n)
Kosmosa sarežģītība: O(n)
OrderedDict ir Python vārdnīcas apakšklase, kas atceras vienumu pievienošanas secību. Parastā Python vārdnīcā vienumu secība netiek garantēta, un tā var mainīties starp dažādām programmas palaišanas reizēm vai dažādām Python versijām. Tomēr OrderedDict saglabā vienumu secību, kā tie tika pievienoti, pat ja vēlāk tiek pievienoti jauni vienumi vai mainīti esošie vienumi.
Citi apsvērumi
- Pasūtītais diktāts Python versijā 2.7 patērē vairāk atmiņas nekā parastais diktāts. Tas ir saistīts ar pamatā esošās divkārši saistītā saraksta ieviešanu pasūtījuma saglabāšanai. Python 2.7 Ordered Dict nav dikta apakšklase, tas ir specializēts konteiners no kolekciju moduļa.
- Sākot ar Python 3.7, tiek garantēta Python vārdnīcu ievietošanas secība.
- Pasūtīto Dict var izmantot kā kaudzi ar palīdzību ES dzeru funkciju. Mēģiniet ieviest LRU kešatmiņu ar Ordered Dict.