Python nudi mnoge ugrađene strukture podataka, poput popisa, korijena i rječnika, za učinkovito spremanje i upravljanje podacima. Rječnici pružaju jednostavan način spremanja podataka kao parova ključ / vrijednost. Ključ djeluje kao indeks i koristi se za dohvaćanje podataka. Ključevi bi trebali biti jedinstveni i nepromjenjivi u cijelom rječniku. Ključevi su uglavnom nizovi i cijeli brojevi, iako vrijednost ključa može biti bilo koje vrste, poput cijelog broja, niza, broja s pomičnom zarezom ili složenog broja. U međuvremenu, rječnik može sadržavati zbirku, poput popisa, nabora ili neke druge vrste rječnika. Rječnik u Pythonu kreira se pomoću para kovrčavih zagrada u kojima je svaki par ključ / vrijednost odvojen zarezom.
Što ako pokušate pristupiti ili izmijeniti određeni ključ u rječniku koji ne postoji? Pa, u ovom slučaju, tumač Python će pokrenuti pogrešku "KeyError" i prekinuti izvršavanje programa.
Pogledajmo primjer pogreške "KeyError".
#stvaranje rječnikamy_dict = 1: "Zdravo", 2: "Dobrodošli", 3: "LinuxHint"
# pristup ključu koji ne postoji
moja_ presuda [4]
Izlaz
Da bi riješio ovu pogrešku, Python pruža defaultdict vrstu, klasu rječnika koja se može naći u modulu collection. Ovaj članak detaljno pokriva zadanu presudu za Python.
Objašnjenje i primjeri nepravomoćne presude
Zadana je presuda alternativa rječniku Python. Vraća objekte tipa rječnika. Zadana presuda je podrazred izreke. U slučaju da nedostaje ključ, umjesto da se pojavi pogreška "KeyError", zadana je vrijednost za nepostojeći ključ. Sintaksa zadane presude je sljedeća:
zadana presuda (default_factory)Funkcija defaultdict uzima kao argument parametar default_factory. Funkcija default_factory vraća zadanu vrijednost za definiranu defaultdict. Ako pokušamo pristupiti ili izmijeniti ključ koji nedostaje, tada funkcija default_factory vraća zadanu vrijednost kao rezultat. Ako funkcija default_factory nedostaje, tada će defaultdic pokrenuti pogrešku "KeyError" ako nedostaju ključevi.
Prvo ćemo implementirati defaultdic u našu Python skriptu za pristup postojećim i nedostajućim ključevima.
#import defaultdict iz modula za prikupljanjeiz zbirki import defaultdict
#definiranje funkcije za vraćanje zadane vrijednosti
def my_func ():
print ("Ključ nije definiran")
#creating defualtdict
# prosljeđivanje my_func () kao argumenta za zadanu presudu
my_dict = zadana presuda (my_func)
#definiranje ključeva i vrijednosti
my_dict [1] = "Pozdrav"
my_dict [2] = "Dobrodošli"
my_dict [3] = "LinuxHint"
# pristup vrijednostima pomoću tipki
ispis (my_dict [1])
ispis (my_dict [2])
ispis (my_dict [3])
# pristup nedostajućem ili nedefiniranom ključu
moja_ presuda [4]
Izlaz
Tipka [4] nedostaje. Dakle, umjesto da izazove pogrešku "KeyError", poziva funkciju default_factory, koja vraća zadanu vrijednost.
Lambda funkcija, poznata kao anonimna funkcija, također se može koristiti kao parametar default_factory.
Dalje, implementirat ćemo lambda funkciju i proslijediti je kao argument zadane presude.
#import defaultdict iz modula za prikupljanjeiz zbirki import defaultdict
#creating defualtdict
# prolazak funkcije Lamnda kao argument za presudu
my_dict = defaultdict (lambda: "Ključ nije definiran")
#definiranje ključeva i vrijednosti
my_dict [1] = "Pozdrav"
my_dict [2] = "Dobrodošli"
my_dict [3] = "LinuxHint"
# pristup vrijednostima pomoću tipki
ispis (my_dict [1])
ispis (moj_dict [2])
ispis (my_dict [3])
# pristup nedostajućem ili nedefiniranom ključu
ispis (my_dict [4])
Defaultdict poziva default_factory da pruži zadanu vrijednost, ali funkcija __missing () __ pruža zadanu vrijednost. Funkcija __missing () __ je ugrađena funkcija u Pythonu koja kao argument uzima parametar default_factory. Ako parametar default_factory nije definiran, funkcija __missing () __ dovodi do pogreške "KeyError".
Ovdje ćemo koristiti funkciju __missing () __ u našoj Python skripti.
#import defaultdict iz modula za prikupljanjeiz zbirki import defaultdict
#definiranje funkcije za vraćanje zadane vrijednosti
def my_func ():
print ("Ključ nije definiran")
#creating defualtdict
# prosljeđivanje my_func () kao argumenta za zadanu presudu
my_dict = zadana presuda (my_func)
#definiranje ključeva i vrijednosti
my_dict [1] = "LinuxHint"
# pristup vrijednostima pomoću tipki
ispis (my_dict [1])
# pristup nedostajućem ili nedefiniranom ključu
moja_ presuda.__ nedostaje __ (2)
Izlaz
Klase popisa i int mogu se koristiti i kao default_factory parametri s defaultdictom.
Navedi kao zadani_fabrički parametar
Zadana presuda kreira se s vrijednostima popisa kada se klasi popisa proslijedi default_factory parametar.
#import defaultdict iz modula za prikupljanjeiz zbirki import defaultdict
# definiranje zadane presude
# prosljeđivanje klase popisa kao zadane_tvornice
my_dict = zadana presuda (popis)
za i u opsegu (7):
moja_ presuda [i].dodati (i)
#print vrijednosti
ispis (my_dict)
Izlaz
Izlaz prikazuje vrijednosti na popisu. Kao što vidite, stvorena je zadana presuda koja sadrži ključ i vrijednosti.
Cijeli brojevi kao default_factory parametar
Ako proslijedimo klasu int kao default_factory parametar, tada možemo stvoriti defaultdict koji sadrži samo cijele brojeve. Stvorit ćemo popis cijelih brojeva, a zatim ćemo ga spremiti u zadanu presudu.
#import defaultdict iz modula za prikupljanjeiz zbirki import defaultdict
# definiranje zadane presude
# prosljeđivanje klase int kao default_factory
my_dict = defaultdict (int)
#stvaranje popisa cijelih brojeva
moj_popis = [1,2,3]
jer sam na svom_popisu:
moja_ presuda [i] + = 1
#print vrijednosti
ispis (my_dict)
Izlaz
U danom izlazu cjelobrojne vrijednosti prije dvotačke (:) su ključevi, dok su cjelobrojne vrijednosti nakon dvotačke vrijednosti.
Zaključak
Dafualtdict je klasa nalik rječniku prisutna u modulu zbirke. Radi kao Python rječnik, ali ne pokreće "KeyError" kada ključ nije pronađen. Ovaj članak detaljno objašnjava zadanu presudu s raznim primjerima.