An BestiltDict er en ordbokunderklasse som husker rekkefølgen nøkler først ble satt inn i. Den eneste forskjellen mellom dikt() og OrderedDict() ligger i deres håndtering av nøkkelordre i Python .
OrderedDict vs dict i Python
`OrderedDict` opprettholder rekkefølgen som nøkler legges til, og sikrer at rekkefølgen blir bevart under iterasjon. I motsetning til dette garanterer ikke en standardordbok noen spesifikk rekkefølge når den gjentas, og gir verdier i en vilkårlig sekvens. `OrderedDict` utmerker seg ved å beholde den opprinnelige innsettingsrekkefølgen for elementer.
Eksempel: I dette eksemplet demonstrerer koden nedenfor forskjellen mellom en vanlig ordbok ('dict') og en ordnet ordbok ('OrderedDict'). Den skriver først ut elementene i en vanlig ordbok (`d`) der innsettingsrekkefølgen ikke er garantert.
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)> Produksjon:
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 ordbok bestilt
Det er ulike viktige punkter knyttet til bestilling av python-ordbok her, vi diskuterer noen viktige punkter knyttet til Python-ordbok bestiller de følger.
- Nøkkelverdi Endring
- Sletting og innsetting på nytt
- Likestillingssammenlikning
- OrderedDict Reversering
- Bestilt dikt popitem sist
- Nøkkelinnsetting i vilkårlig posisjon
- Samlingsmodul
Nøkkelverdi Endring i Python Dictionary Order
Hvis verdien til en bestemt nøkkel endres, forblir nøkkelens plassering uendret i OrderedDict. denne Python-metoden demonstrerer endring av verdien knyttet til en nøkkel i en OrderedDict.
Eksempel: I dette eksemplet bruker Python-koden nedenfor en OrderedDict for å demonstrere endring av verdien knyttet til en spesifikk nøkkel. Til å begynne med oppretter den en OrderedDict med nøklene 'a' til 'd' og respektive verdier 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)> Produksjon:
Before: a 1 b 2 c 3 d 4 After: a 1 b 2 c 5 d 4>
Likhetssammenligning i Python Ordbokrekkefølge
OrderedDicts i Python kan sammenlignes for likestilling, ikke bare basert på innholdet deres, men også med tanke på innsettingsrekkefølgen. Dette er nyttig når du sammenligner to OrderedDicts for både nøkkelverdi-par og rekkefølgen deres.
Eksempel: I dette eksemplet lager koden to OrderedDicts, `od1` og `od2`, med forskjellige rekkefølger av nøkkelverdi-par. Den viser deretter at innsettingsrekkefølgen vurderes når man sammenligner dem for likhet ved å bruke `==`-operatoren, noe som 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)> Utgang:
False>
OrderedDict Reversering i Python Dictionary Order
Etter å ha opprettet en OrderedDict,reverse>metoden brukes, som reverserer rekkefølgen på nøkkelverdi-par. Den påfølgende sløyfen skriver ut elementene i omvendt rekkefølge, og fremhever OrderedDicts evne til å forenkle reverseringsoperasjoner. OrderedDicts kan reverseres ved å brukereverse>metode. Dette reverserer rekkefølgen på nøkkelverdi-parene i ordboken.
Eksempel: I dette eksemplet bruker koden nedenfor en OrderedDict og reverserer nøkkelverdi-parene ved å bruke 'reverse'-metoden. Den påfølgende sløyfen skriver ut elementene i omvendt rekkefølge, noe som resulterer i utdata: `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)> Utgang:
c 3, b 2, a 1>
OrderedDict Popitem() og Python-ordbokrekkefølge
De popitem()>metode i OrderedDict kan brukes medlast>parameter for å fjerne og returnere det siste innsatte nøkkelverdi-paret. Dette er nyttig når du ønsker å behandle varer på en sist inn, først ut måte. Ved å bruke `popitem(last=True)` på en OrderedDict vil det fjerne og returnere det sist tilføyde elementet, noe som gir fleksibilitet i å administrere rekkefølgen på elementene.
liste over stater
Eksempel: I dette eksemplet bruker koden nedenfor en OrderedDict og bruker `popitem`-metoden med `last=True` for å fjerne og lagre det siste innsatte nøkkelverdi-paret. Den skriver deretter ut det fjernede elementet, noe som resulterer i utdata: `('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)> Utgang:
('c', 3)>Nøkkelinnsetting i vilkårlig posisjon i Python ordbok bestilt
OrderedDict gjør det mulig å sette inn en ny nøkkel på en bestemt posisjon ved å brukemove_to_end>ogmove_to_start>metoder. Denne fleksibiliteten tillater dynamisk omorganisering av nøkler basert på bruk eller prioritet .
Eksempel: I dette eksemplet bruker Python-koden nedenfor en OrderedDict for å lage en ordbok med ordnede nøkkelverdi-par. Den bruker deretter `move_to_end`-metoden for å flytte nøkkel 'a' til slutten og nøkkel 'b' til begynnelsen.
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)> Utgang:
b 2, c 3, a 1>
Sletting og innsetting på nytt Python ordbok bestilt
Sletting og innsetting av den samme nøkkelen vil skyve den bakover ettersom OrderedDict, men opprettholder rekkefølgen for innsetting. Denne metoden viser slettings- og gjeninnsettingsoperasjoner i en Python OrderedDict. Til å begynne med fyller den OrderedDict med nøkkelverdi-par, sletter en oppføring, skriver ut den oppdaterte OrderedDict og setter deretter inn den slettede oppføringen på nytt, noe som viser ordbokens ordnede natur.
Eksempel: I dette eksemplet demonstrerer pythonkoden nedenfor sletting, gjeninnsetting og utskrift av elementer i en OrderedDict. Den skriver først ut OrderedDict-elementene, sletter deretter oppføringen med tasten 'c', skriver ut den oppdaterte OrderedDict, og til slutt setter den inn 'c' med verdien, og skriver ut OrderedDict igjen.
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)> Produksjon:
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 Ordbokrekkefølge
OrderedDict er en del av samlingsmodul i Python. Den gir alle metodene og funksjonaliteten til en vanlig ordbok, samt noen ekstra metoder som drar nytte av bestilling av varene. Her er noen eksempler på bruk av OrderedDict i Python:
Eksempel: I dette eksemplet bruker koden nedenfor en OrderedDict for å lage en ordbok med ordnede nøkkelverdi-par. Den legger til et nytt element 'd' på slutten og setter inn elementer 'e' og 'f' i begynnelsen, mens 'e' flyttes foran. Den siste sløyfen skriver ut ordbokelementene i den rekkefølgen de ble lagt til.
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)> Produksjon:
e 5 a 1 b 2 c 3 d 4 f 6>
Tidskompleksitet:
- Hent element (nøkkel): O(1)
- Sett element (nøkkel, verdi): O(1)
- Slett element (nøkkel): På)
- Iterasjon: På)
Plass kompleksitet: På)
OrderedDict er en ordbokunderklasse i Python som husker rekkefølgen elementer ble lagt til. I en vanlig Python-ordbok er ikke rekkefølgen på elementene garantert, og den kan endres mellom ulike kjøringer av programmet eller ulike versjoner av Python. En OrderedDict beholder imidlertid rekkefølgen på elementene etter hvert som de ble lagt til, selv om nye elementer senere legges til eller eksisterende elementer endres.
Andre hensyn
- Bestilt dict i Python versjon 2.7 bruker mer minne enn vanlig dict. Dette er på grunn av den underliggende Doubly Linked List-implementeringen for å holde ordren. I Python 2.7 er Ordered Dict ikke dict-underklasse, det er en spesialisert beholder fra samlingsmodulen.
- Fra og med Python 3.7 er innsettingsrekkefølge for Python-ordbøker garantert.
- Bestilt Dict kan brukes som stabel ved hjelp av jeg drikker funksjon. Prøv å implementere LRU-cache med Ordered Dict.