Andmete tõhusaks salvestamiseks ja haldamiseks pakub Python paljusid sisseehitatud andmestruktuure, nagu loendid, kogumid ja sõnastikud. Sõnaraamatud võimaldavad hõlpsalt andmeid peamiste väärtuste paaridena salvestada. Võti toimib indeksina ja seda kasutatakse andmete hankimiseks. Klahvid peaksid olema sõnastikus ainulaadsed ja muutumatud. Võtmed on enamasti stringid ja täisarvud, kuigi võtme väärtus võib olla mis tahes tüüpi, näiteks täisarv, string, ujukomaarv või kompleksarv. Vahepeal võib sõnastik sisaldada kogu, näiteks loendit, dupletti või mõnda muud tüüpi sõnastikku. Pythoni sõnastik luuakse lokkisulgude paari abil, milles iga võtme-väärtuse paar eraldatakse komaga.
Mis juhtub, kui proovite juurde pääseda konkreetsele võtmele või seda muuta sõnastikus, mida pole olemas? Noh, sel juhul tõstab Pythoni tõlk tõrke "KeyError" ja lõpetab programmi käivitamise.
Vaatame vea „KeyError” näidet.
# sõnastiku loominemy_dict = 1: "Tere", 2: "Tere tulemast", 3: "LinuxHint"
# juurdepääs võtmele, mida pole olemas
minu_diktsioon [4]
Väljund
Selle tõrke lahendamiseks pakub Python defaultdict tüüpi, sõnastiku klassi, mille leiate kogumismoodulist. See artikkel hõlmab üksikasjalikult Pythoni vaikedikti.
Defaultdict'i selgitus ja näited
Defaultdict on Pythoni sõnaraamatu alternatiiv. See tagastab sõnastiku tüüpi objektid. Defaultdict on dikti alamklass. Puuduva võtme korral antakse vea „KeyError” tõstatamise asemel olematu võtme vaikeväärtus. Defaultdict süntaks on järgmine:
defaultdict (default_factory)Funktsioon defaultdict võtab argumendiks default_factory parameetri. Funktsioon default_factory tagastab määratletud defaultdict vaikeväärtuse. Kui proovime pääseda puuduva võtme juurde või seda muuta, tagastab funktsioon default_factory tulemuseks vaikeväärtuse. Kui funktsioon default_factory puudub, tekitab defaultdic vea „KeyError”, kui võtmeid pole.
Esiteks rakendame oma Pythoni skriptis defaultdicu, et pääseda juurde nii olemasolevatele kui ka puuduvatele võtmetele.
#import defaultdict kogumismoodulistkogudest impordi defaultdict
#defining funktsiooni vaikeväärtuse tagastamiseks
def my_func ():
print ("Võti pole määratletud")
# defualtdikti loomine
#passing my_func () kui argument defaultdictile
my_dict = defaultdict (minu_funktsioon)
# võtmete ja väärtuste määratlemine
my_dict [1] = "Tere"
my_dict [2] = "Tere tulemast"
my_dict [3] = "LinuxHint"
# väärtustele juurdepääs võtmete abil
print (my_dict [1])
print (my_dict [2])
print (my_dict [3])
# puuduva või määratlemata võtme juurde pääsemine
minu_diktsioon [4]
Väljund
[4] on puuduv võti. Niisiis, selle asemel, et tõsta „KeyError” viga, kutsub see funktsiooni default_factory, mis tagastab vaikeväärtuse.
Parameetrina default_factory saab kasutada ka anonüümse funktsioonina tuntud lambda-funktsiooni.
Järgmisena rakendame lambda funktsiooni ja edastame selle argumendina defaultdictile.
#import defaultdict kogumismoodulistkogudest impordi defaultdict
# defualtdikti loomine
# Lamnda funktsiooni ületamine defaultdict argumendina
my_dict = defaultdict (lambda: "Võti pole määratletud")
# võtmete ja väärtuste määratlemine
my_dict [1] = "Tere"
my_dict [2] = "Tere tulemast"
my_dict [3] = "LinuxHint"
# väärtustele juurdepääs võtmete abil
print (my_dict [1])
print (my_dict [2])
print (my_dict [3])
# puuduva või määratlemata võtme juurde pääsemine
print (my_dict [4])
Defaultdict kutsub vaikeväärtuse andmiseks default_factory, kuid funktsioon __missing () __ annab vaikeväärtuse. Funktsioon __missing () __ on Pythonis sisseehitatud funktsioon, mis võtab argumendiks default_factory parameetri. Kui default_factory parameetrit pole määratletud, tekitab funktsioon __missing () __ tõrke „KeyError”.
Siin kasutame Pythoni skriptis funktsiooni __missing () __.
#import defaultdict kogumismoodulistkogudest impordi defaultdict
#defining funktsiooni vaikeväärtuse tagastamiseks
def my_func ():
print ("Võti pole määratletud")
# defualtdikti loomine
#passing my_func () kui argument defaultdictile
my_dict = defaultdict (minu_funktsioon)
# võtmete ja väärtuste määratlemine
my_dict [1] = "LinuxHint"
# väärtustele juurdepääs võtmete abil
print (my_dict [1])
# puuduva või määratlemata võtme juurde pääsemine
my_dict.__ puudu __ (2)
Väljund
Loendit ja int-klassi saab kasutada ka default_factory parameetritena defaultdict-ga.
Nimekiri default_factory parameetrina
Defaultdict luuakse loendi väärtustega, kui loendiklassi parameeter default_factory edastatakse.
#import defaultdict kogumismoodulistkogudest impordi defaultdict
# defaultdict määratlemine
# loendiklassi läbimine vaikeväärtusena
my_dict = defaultdict (loend)
i jaoks vahemikus (7):
minu_diktsioon [i].lisa (i)
# väärtuste printimine
print (my_dict)
Väljund
Väljund näitab loendis olevaid väärtusi. Nagu näete, on loodud vaikedikt, mis sisaldab võtit ja väärtusi.
Täisarv vaikimisi_tehase parameetrina
Kui edastame int-klassi parameetrina default_factory, saame luua defaultdict-i, mis sisaldab ainult täisarvusid. Loome täisarvude loendi ja seejärel salvestame selle defaultdict.
#import defaultdict kogumismoodulistkogudest impordi defaultdict
# defaultdict määratlemine
# läbib int klassi default_factory
my_dict = defaultdict (int)
# täisarvude loendi loomine
minu_loend = [1,2,3]
minu jaoks minu_loendis:
minu_diktsioon [i] + = 1
# väärtuste printimine
print (my_dict)
Väljund
Antud väljundis on kooloni (:) ees olevad täisarvu väärtused võtmed, samas kui kooloni järel olevad täisarvu väärtused.
Järeldus
Dafualtdict on sõnastikusarnane klass, mis asub kogumismoodulis. See töötab nagu Pythoni sõnastik, kuid ei tõsta „KeyErrorit”, kui võtit ei leita. Selles artiklis selgitatakse vaikenäidet üksikasjalikult erinevate näidetega.