Python

Python defaultdict

Python defaultdict

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 ordbok
my_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 samlingsmodulen
fra 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 samlingsmodulen
fra 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 samlingsmodulen
fra 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 samlingsmodulen
fra 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 samlingsmodulen
fra 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.

Kjemp om Wesnoth-opplæringen
Kampen om Wesnoth er et av de mest populære open source-strategispillene du kan spille på dette tidspunktet. Ikke bare har dette spillet vært i utvikl...
0 A.D. Opplæringen
Ut av de mange strategispillene der ute, 0 A.D. klarer å skille seg ut som en omfattende tittel og et veldig dypt, taktisk spill til tross for å være ...
Unity3D opplæring
Introduksjon til Unity 3D Unity 3D er en kraftig spillutviklingsmotor. Det er kryssplattform, det er det lar deg lage spill for mobil, web, stasjonær ...