An BestiltDict er en ordbogsunderklasse, der husker den rækkefølge, som nøglerne først blev indsat i. Den eneste forskel mellem diktere() og OrderedDict() ligger i deres håndtering af nøgleordre i Python .
OrderedDict vs dict i Python
`OrderedDict` opretholder rækkefølgen, hvori nøglerne tilføjes, og sikrer, at rækkefølgen bevares under iteration. I modsætning hertil garanterer en standardordbog ikke nogen specifik rækkefølge, når den gentages, idet den giver værdier i en vilkårlig rækkefølge. `OrderedDict` adskiller sig ved at bevare den oprindelige indsættelsesrækkefølge af elementer.
Eksempel: I dette eksempel demonstrerer nedenstående kode forskellen mellem en almindelig ordbog ('dict') og en ordnet ordbog ('OrderedDict'). Den udskriver først emnerne i en almindelig ordbog ('d'), hvor rækkefølgen af indsættelse ikke er garanteret.
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)> Produktion:
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 Ordbog bestilt
Der er forskellige vigtige punkter relateret til python-ordbogsbestilling her, vi diskuterer nogle vigtige punkter relateret til Python ordbog efter at de følger.
- Nøgleværdi Ændring
- Sletning og genindsættelse
- Ligestillingssammenligning
- OrderedDict Reversal
- Bestilt Dict Popitem Sidst
- Nøgleindsættelse i vilkårlig position
- Indsamlingsmodul
Nøgleværdi Ændring i Python Dictionary Order
Hvis værdien af en bestemt nøgle ændres, forbliver nøglens position uændret i OrderedDict. denne Python-metode demonstrerer ændring af værdien forbundet med en nøgle i en OrderedDict.
Eksempel: I dette eksempel bruger nedenstående Python-kode en OrderedDict til at demonstrere ændring af værdien forbundet med en specifik nøgle. Til at begynde med opretter den en OrderedDict med tasterne 'a' til 'd' og respektive værdier 1 til 4.
streng til intPython
# 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)> Produktion:
Before: a 1 b 2 c 3 d 4 After: a 1 b 2 c 5 d 4>
Ligestillingssammenligning i Python Ordbogsrækkefølge
OrderedDicts i Python kan sammenlignes for lighed, ikke kun baseret på deres indhold, men også i betragtning af rækkefølgen af indsættelse. Dette er nyttigt, når man sammenligner to OrderedDicts for både nøgle-værdi-par og deres rækkefølge.
Eksempel: I dette eksempel opretter koden to OrderedDicts, `od1` og `od2`, med forskellige rækkefølger af nøgle-værdi-par. Det viser derefter, at rækkefølgen af indsættelse tages i betragtning, når man sammenligner dem for lighed ved hjælp af `==`-operatoren, hvilket resulterer i `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)> Output:
False>
OrderedDict Reversal i Python Ordbogsrækkefølge
Efter oprettelse af en OrderedDict,reverse>metode anvendes, som vender rækkefølgen af nøgle-værdi-par. Den efterfølgende løkke udskriver emnerne i omvendt rækkefølge, hvilket fremhæver OrderedDicts evne til at lette vendingsoperationer. OrderedDicts kan vendes ved hjælp afreverse>metode. Dette vender om rækkefølgen af nøgleværdi-par i ordbogen.
Eksempel: I dette eksempel bruger nedenstående kode en OrderedDict og vender dens nøgle-værdi-par ved hjælp af 'reverse'-metoden. Den efterfølgende løkke udskriver emnerne i omvendt rækkefølge, hvilket resulterer i outputtet: `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)> Output:
c 3, b 2, a 1>
OrderedDict Popitem() og Python Ordbogsrækkefølge
Det popitem()>metode i OrderedDict kan bruges medlast>parameter for at fjerne og returnere det sidst indsatte nøgleværdi-par. Dette er nyttigt, når du vil behandle varer på en sidst ind, først ud måde. Brug af `popitem(last=True)` på en OrderedDict ville fjerne og returnere det senest tilføjede element, hvilket giver fleksibilitet til at administrere rækkefølgen af elementer.
række vs kolonne
Eksempel: I dette eksempel bruger nedenstående kode en OrderedDict og anvender `popitem`-metoden med `last=True` for at fjerne og gemme det sidst indsatte nøgle-værdi-par. Den udskriver derefter det fjernede element, hvilket resulterer i outputtet: `('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)> Output:
('c', 3)>Nøgleindsættelse ved vilkårlig position i Python Ordbog bestilt
OrderedDict gør det muligt at indsætte en ny nøgle på en bestemt position ved hjælp afmove_to_end>ogmove_to_start>metoder. Denne fleksibilitet tillader dynamisk genbestilling af nøgler baseret på brug eller prioritet .
Eksempel: I dette eksempel bruger nedenstående Python-kode en OrderedDict til at oprette en ordbog med ordnede nøgle-værdi-par. Den anvender derefter 'move_to_end'-metoden til at flytte nøglen 'a' til slutningen og nøglen 'b' til begyndelsen.
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)> Output:
b 2, c 3, a 1>
Sletning og genindsættelse Python Ordbog bestilt
Sletning og genindsættelse af den samme nøgle vil skubbe den bagud, da OrderedDict dog bevarer rækkefølgen for indsættelse. Denne metode viser sletnings- og genindsættelsesoperationer i en Python OrderedDict. Til at begynde med udfylder den OrderedDict med nøgle-værdi-par, sletter en post, udskriver den opdaterede OrderedDict og genindsætter efterfølgende den slettede post, hvilket viser ordbogens ordnede karakter.
Eksempel: I dette eksempel demonstrerer nedenstående python-kode sletning, genindsættelse og udskrivning af elementer i en OrderedDict. Den udskriver først OrderedDict-elementerne, sletter derefter posten med tasten 'c', udskriver den opdaterede OrderedDict og genindsætter til sidst 'c' med dens værdi og udskriver OrderedDict igen.
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)> Produktion:
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>
Samlingsmodul i Python Ordbogsrækkefølge
OrderedDict er en del af indsamlingsmodul i Python. Det giver alle metoder og funktionalitet i en almindelig ordbog, samt nogle yderligere metoder, der udnytter bestilling af emnerne. Her er nogle eksempler på brug af OrderedDict i Python:
Eksempel: I dette eksempel bruger nedenstående kode en OrderedDict til at oprette en ordbog med ordnede nøgle-værdi-par. Den tilføjer et nyt element 'd' til slutningen og indsætter elementerne 'e' og 'f' i begyndelsen, hvor 'e' flyttes foran. Den sidste løkke udskriver ordbogselementerne i den rækkefølge, de blev tilføjet.
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)> Produktion:
e 5 a 1 b 2 c 3 d 4 f 6>
Tidskompleksitet:
- Hent vare (nøgle): O(1)
- Indstil element (nøgle, værdi): O(1)
- Slet element (nøgle): På)
- Gentagelse: På)
Rumkompleksitet: På)
OrderedDict er en ordbogsunderklasse i Python, der husker rækkefølgen, hvori elementer blev tilføjet. I en almindelig Python-ordbog er rækkefølgen af emnerne ikke garanteret, og den kan ændre sig mellem forskellige kørsler af programmet eller forskellige versioner af Python. En OrderedDict bevarer dog rækkefølgen af varerne, efterhånden som de blev tilføjet, selvom nye varer senere tilføjes eller eksisterende varer ændres.
Andre overvejelser
- Bestilt dict i Python version 2.7 bruger mere hukommelse end normalt dict. Dette skyldes den underliggende Double Linked List implementering til at holde ordren. I Python 2.7 er Ordered Dict ikke dict-underklasse, det er en specialiseret container fra samlingsmodulet.
- Fra Python 3.7 er indsættelsesrækkefølgen af Python-ordbøger garanteret.
- Bestilt Dict kan bruges som stak ved hjælp af jeg drikker fungere. Prøv at implementere LRU-cache med Ordered Dict.