Python

Python defaultdict

Python defaultdict

Python tilbyder mange indbyggede datastrukturer, såsom lister, tupler og ordbøger, for at gemme og administrere data effektivt. Ordbøger giver en nem måde at gemme data på som nøgleværdipar. En nøgle fungerer som et indeks og bruges til at hente data. Tasterne skal være unikke og uforanderlige i hele ordbogen. Nøgler er for det meste strenge og heltal, selvom værdien af ​​en nøgle kan være af enhver type, såsom et heltal, streng, flydende nummer eller komplekst tal. I mellemtiden kan en ordbog indeholde en samling, såsom en liste, tuple eller en anden type ordbog. En ordbog i Python oprettes ved hjælp af et par krøllede parenteser, hvor hvert nøgleværdipar er adskilt med et komma.

Hvad hvis du prøver at få adgang til eller ændre en bestemt nøgle i en ordbog, der ikke findes? Nå, i dette tilfælde vil Python-tolken hæve "KeyError" -fejlen og afslutte udførelsen af ​​programmet.

Lad os se på et eksempel på "KeyError" -fejlen.

#oprette en ordbog
my_dict = 1: "Hej", 2: "Velkommen", 3: "LinuxHint"
#adgang til en nøgle, der ikke findes
my_dict [4]

Produktion

For at håndtere denne fejl leverer Python standarddiktypen, en ordbogsklasse, der kan findes i samlingsmodulet. Denne artikel dækker Python defaultdict i detaljer.

Forklaring og eksempler på standarddikt

Defaultdict er alternativet til Python-ordbogen. Det returnerer objekter af ordbogstypen. Standarddict er en underklasse af dict. I tilfælde af en manglende nøgle i stedet for at hæve en “KeyError” -fejl, angives standardværdien for den ikke-eksisterende nøgle. Syntaksen for defaultdict er som følger:

defaultdict (standardfabrik)

Standarddict-funktionen tager parameteren default_factory som et argument. Funktionen default_factory returnerer standardværdien for den definerede defaultdict. Hvis vi forsøger at få adgang til eller ændre en manglende nøgle, returnerer funktionen standard_fabrik standardværdien som resultat. Hvis standard_fabriksfunktionen mangler, vil defaultdic oprette en “KeyError” -fejl, hvis der mangler taster.

Først implementerer vi en defaultdic i vores Python-script for at få adgang til både eksisterende og manglende nøgler.

#import standarddict fra opsamlingsmodulet
fra samlinger importerer standarddikt
#definerer en funktion for at returnere standardværdien
def my_func ():
print ("Nøglen er ikke defineret")
# opretter en defualtict
# passerer my_func () som et argument til defaultdict
my_dict = defaultdict (my_func)
#definerer nøgler og værdier
my_dict [1] = "Hej"
my_dict [2] = "Velkommen"
my_dict [3] = "LinuxHint"
#adgang til værdierne ved hjælp af taster
print (my_dict [1])
print (my_dict [2])
print (my_dict [3])
# adgang til den manglende eller ikke definerede nøgle
my_dict [4]

Produktion

[4] er den manglende nøgle. Så i stedet for at hæve en “KeyError” -fejl, kalder den funktionen standard_fabrik, som returnerer standardværdien.


En lambda-funktion, kendt som en anonym funktion, kan også bruges som standard_fabriksparameter.

Dernæst implementerer vi en lambda-funktion og sender den som et argument til defaultdict.

#import standarddict fra opsamlingsmodulet
fra samlinger importerer standarddikt
# opretter en defualtict
# passerer Lamnda-funktionen som et argument til defaultdict
my_dict = defaultdict (lambda: "Nøglen er ikke defineret")
#definerer nøgler og værdier
my_dict [1] = "Hej"
my_dict [2] = "Velkommen"
my_dict [3] = "LinuxHint"
#adgang til værdierne ved hjælp af taster
print (my_dict [1])
print (my_dict [2])
print (my_dict [3])
# adgang til den manglende eller ikke definerede nøgle
print (my_dict [4])

Defaultdict kalder standardfabrikken for at angive standardværdien, men funktionen __missing () __ giver standardværdien. Funktionen __missing () __ er en indbygget funktion i Python, der tager parameteren default_factory som et argument. Hvis parameteren default_factory ikke er defineret, hæver funktionen __missing () __ “KeyError” -fejlen.

Her bruger vi funktionen __missing () __ i vores Python-script.

#import standarddict fra opsamlingsmodulet
fra samlinger importerer standarddikt
#definerer en funktion for at returnere standardværdien
def my_func ():
print ("Nøglen er ikke defineret")
# opretter en defualtict
# passerer my_func () som et argument til defaultdict
my_dict = defaultdict (my_func)
#definerer nøgler og værdier
my_dict [1] = "LinuxHint"
#adgang til værdierne ved hjælp af taster
print (my_dict [1])
# adgang til den manglende eller ikke definerede nøgle
min_dict.__missing __ (2)

Produktion

Listen og int-klasser kan også bruges som standardfabriksparametre med defaultdict.

Liste som standardfabriksparameter

Standarddict oprettes med listeværdierne, når listeklassen overføres til en standardfabriksparameter.

#import standarddict fra opsamlingsmodulet
fra samlinger importerer standarddikt
# definerer et standarddikt
# bestående listeklasse som standardfabrik
my_dict = defaultdict (liste)
for jeg inden for rækkevidde (7):
my_dict [i].tilføje (i)
# udskriver værdierne
udskrive (min_dikt)

Produktion

Outputtet viser værdierne på listen. Som du kan se, er der oprettet en standarddict, der indeholder nøglen og værdierne.

Heltal som standardfabrik Parameter

Hvis vi videregiver int-klassen som en standardfabriksparameter, kan vi oprette en standarddik, der kun indeholder heltal. Vi opretter en liste over heltal og gemmer den derefter til defaultdict.

#import standarddict fra opsamlingsmodulet
fra samlinger importerer standarddikt
# definerer et standarddikt
# passerer int-klasse som standardfabrik
my_dict = defaultdict (int)
# opretter en liste over heltal
min_liste = [1,2,3]
for jeg i min_liste:
my_dict [i] + = 1
# udskriver værdierne
udskrive (min_dikt)

Produktion

I det givne output er heltalsværdierne før kolon (:) nøgler, mens heltalværdier efter colon er værdier.

Konklusion

Dafualtdict er en ordboglignende klasse til stede i samlingsmodulet. Det fungerer som en Python-ordbog, men hæver ikke en "KeyError", når en nøgle ikke findes. Denne artikel forklarer standarddict detaljeret med forskellige eksempler.

Sådan vises FPS-tæller i Linux-spil
Linux-spil fik et stort skub, da Valve annoncerede Linux-support til Steam-klient og deres spil i 2012. Siden da har mange AAA- og indiespil fundet ve...
Sådan downloades og afspilles Sid Meiers Civilization VI på Linux
Introduktion til spillet Civilization 6 er et moderne udtryk for det klassiske koncept, der blev introduceret i serien af ​​Age of Empires-spil. Ideen...
Sådan installeres og afspilles Doom på Linux
Introduktion til undergang Doom-serien opstod i 90'erne efter frigivelsen af ​​den originale Doom. Det var et øjeblikkeligt hit, og fra den tid af har...