Python

Pythoni vaikedikt

Pythoni vaikedikt

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 loomine
my_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 kogumismoodulist
kogudest 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 kogumismoodulist
kogudest 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 kogumismoodulist
kogudest 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 kogumismoodulist
kogudest 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 kogumismoodulist
kogudest 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.

OpenTTD vs Simutrans
Oma transpordisimulatsiooni loomine võib olla lõbus, lõõgastav ja äärmiselt köitev. Sellepärast peate endale meelepärase leidmiseks kindlasti proovima...
OpenTTD õpetus
OpenTTD on seal üks populaarsemaid ärisimulatsioonimänge. Selles mängus peate looma suurepärase transpordiettevõtte. Alustate siiski alguses umbes 190...
SuperTuxKart Linuxile
SuperTuxKart on suurepärane pealkiri, mis on loodud selleks, et tuua teie Linuxi süsteemis tasuta Mario Karti kogemus. See on päris keeruline ja lõbus...