Python tilbyr mange innebygde datastrukturer, for eksempel lister, tupler og ordbøker, for å lagre og administrere data effektivt. Ordbøker gir en enkel måte å lagre data som nøkkelverdipar. En nøkkel fungerer som en indeks og brukes til å hente data. Tastene skal være unike og uforanderlige i hele ordboken. Taster er for det meste strenger og heltall, selv om verdien til en nøkkel kan være av hvilken som helst type, for eksempel et heltall, streng, flytende nummer eller komplekst tall. I mellomtiden kan en ordbok inneholde en samling, for eksempel en liste, tuple eller annen type ordbok. En ordbok i Python er opprettet ved hjelp av et par krøllete parenteser, der hvert nøkkelverdipar er atskilt med et komma.
Hva om du prøver å få tilgang til eller endre en bestemt nøkkel i en ordbok som ikke eksisterer? I dette tilfellet vil Python-tolk heve feilen "KeyError" og avslutte kjøringen av programmet.
La oss se på et eksempel på "KeyError" -feilen.
# skape en ordbokmy_dict = 1: "Hei", 2: "Velkommen", 3: "LinuxHint"
# tilgang til en nøkkel som ikke eksisterer
my_dict [4]
Produksjon
For å håndtere denne feilen gir Python standarddiktypen, en ordboksklasse som finnes i samlingsmodulen. Denne artikkelen dekker Pythons standarddikt i detalj.
Forklaring og eksempler på standarddikt
Defaultdict er alternativet til Python-ordboken. Den returnerer ordbokstypeobjekter. Standarddict er en underklasse av dict. I tilfelle manglende nøkkel, i stedet for å heve en "KeyError" -feil, er standardverdien angitt for den ikke-eksisterende nøkkelen. Syntaksen til defaultdict er som følger:
defaultdict (default_factory)Standarddict-funksjonen tar parameteren default_factory som et argument. Standard_fabrikksfunksjonen returnerer standardverdien for det definerte standarddiktet. Hvis vi prøver å få tilgang til eller endre en nøkkel som mangler, returnerer default_factory-funksjonen standardverdien som resultat. Hvis standard_fabrikksfunksjonen mangler, vil standarddisken heve en "KeyError" -feil hvis det mangler taster.
Først vil vi implementere en defaultdic i Python-skriptet vårt for å få tilgang til både eksisterende og manglende nøkler.
#import standarddict fra samlingsmodulenfra samlinger importerer standarddikt
#defining en funksjon for å returnere standardverdien
def my_func ():
skriv ut ("Nøkkelen er ikke definert")
#creating a defualtdict
# passerer my_func () som et argument til defaultdict
my_dict = defaultdict (my_func)
#definerer nøkler og verdier
my_dict [1] = "Hei"
my_dict [2] = "Velkommen"
my_dict [3] = "LinuxHint"
# tilgang til verdiene ved hjelp av nøkler
skriv ut (min_dikt [1])
skriv ut (my_dict [2])
skriv ut (min_dikt [3])
# tilgang til den manglende eller ikke definerte nøkkelen
my_dict [4]
Produksjon
[4] er den manglende nøkkelen. Så, i stedet for å heve en “KeyError” -feil, kaller den funksjonen default_factory, som returnerer standardverdien.
En lambda-funksjon, kjent som en anonym funksjon, kan også brukes som parameter for standardfabrikk.
Deretter implementerer vi en lambda-funksjon og sender den som et argument til defaultdict.
#import standarddict fra samlingsmodulenfra samlinger importerer standarddikt
#creating a defualtdict
#passing the Lamnda function as an argument to defaultdict
my_dict = defaultdict (lambda: "Nøkkelen er ikke definert")
#definerer nøkler og verdier
my_dict [1] = "Hei"
my_dict [2] = "Velkommen"
my_dict [3] = "LinuxHint"
# tilgang til verdiene ved hjelp av nøkler
skriv ut (min_dikt [1])
skriv ut (min_dikt [2])
skriv ut (min_dikt [3])
# tilgang til den manglende eller ikke definerte nøkkelen
skriv ut (my_dict [4])
Defaultdict kaller standard_fabrikken for å oppgi standardverdien, men __missing () __-funksjonen gir standardverdien. Funksjonen __missing () __ er en innebygd funksjon i Python som tar parameteren default_factory som argument. Hvis standard_fabrikkparameteren ikke er definert, øker funksjonen __missing () __ "KeyError" -feilen.
Her vil vi bruke __missing () __-funksjonen i Python-skriptet vårt.
#import standarddict fra samlingsmodulenfra samlinger importerer standarddikt
#defining en funksjon for å returnere standardverdien
def my_func ():
skriv ut ("Nøkkelen er ikke definert")
#creating a defualtdict
# passerer my_func () som et argument til defaultdict
my_dict = defaultdict (my_func)
#definerer nøkler og verdier
my_dict [1] = "LinuxHint"
# tilgang til verdiene ved hjelp av nøkler
skriv ut (min_dikt [1])
# tilgang til den manglende eller ikke definerte nøkkelen
min_dikt.__missing __ (2)
Produksjon
Listen og int-klassene kan også brukes som standard_fabrikkparametere med defaultdict.
Liste som standard_fabrikkparameter
Defaultdict opprettes med listeverdiene når listeklassen overføres til en parameter for default_factory.
#import standarddict fra samlingsmodulenfra samlinger importerer standarddikt
# definere et standarddikt
# bestått listeklasse som standardfabrikk
my_dict = defaultdict (liste)
for jeg innen rekkevidde (7):
my_dict [i].legge til (i)
#utskrift av verdiene
skriv ut (min_dikt)
Produksjon
Utgangen viser verdiene i listen. Som du kan se, er det opprettet et standarddikt som inneholder nøkkelen og verdiene.
Heltall som standardfabrikkparameter
Hvis vi passerer int-klassen som en standard_fabrikparameter, kan vi opprette et standarddikt som bare inneholder heltall. Vi oppretter en liste over heltall og lagrer den deretter til standarddikten.
#import standarddict fra samlingsmodulenfra samlinger importerer standarddikt
# definere et standarddikt
# passerer int-klasse som standardfabrikk
my_dict = defaultdict (int)
#opprette en liste over heltall
min_liste = [1,2,3]
for jeg i min_liste:
min_dikt [i] + = 1
#utskrift av verdiene
skriv ut (min_dikt)
Produksjon
I den gitte utgangen er heltallverdiene før kolon (:) nøkler, mens heltallverdier etter kolon er verdier.
Konklusjon
Dafualtdict er en ordbokslignende klasse til stede i samlingsmodulen. Den fungerer som en Python-ordbok, men hever ikke en "KeyError" når en nøkkel ikke blir funnet. Denne artikkelen forklarer standarddikten i detalj med forskjellige eksempler.