Python

Privzeta sodba Pythona

Privzeta sodba Pythona

Python ponuja številne vgrajene podatkovne strukture, kot so seznami, nabori in slovarji, za učinkovito shranjevanje in upravljanje podatkov. Slovarji omogočajo enostaven način shranjevanja podatkov kot parov ključ-vrednost. Ključ deluje kot indeks in se uporablja za pridobivanje podatkov. Ključi naj bodo v slovarju edinstveni in nespremenljivi. Tipke so večinoma nizi in cela števila, čeprav je vrednost ključa lahko katere koli vrste, na primer celo število, niz, število s plavajočo vejico ali kompleksno število. Medtem lahko slovar vsebuje zbirko, na primer seznam, nabor ali drugo vrsto slovarja. Slovar v Pythonu je ustvarjen s pomočjo par skodranih oklepajev, v katerih je vsak par ključ-vrednost ločen z vejico.

Kaj pa, če poskusite odpreti ali spremeniti določen ključ v slovarju, ki ne obstaja? No, v tem primeru bo tolmač Python sprožil napako »KeyError« in zaključil izvajanje programa.

Oglejmo si primer napake »KeyError«.

# ustvarjanje slovarja
my_dict = 1: "Pozdravljeni", 2: "Dobrodošli", 3: "LinuxHint"
# dostop do ključa, ki ne obstaja
my_dict [4]

Izhod

Za obvladovanje te napake Python ponuja privzeto vrsto izreka, slovarski razred, ki ga lahko najdete v modulu zbirk. Ta članek podrobno zajema razsodbo Pythona.

Pojasnilo in primeri neizpolnitve obveznosti

Privzeta sodba je alternativa slovarju Python. Vrne predmete tipa slovarja. Privzeta sodba je podrazred izreka. V primeru manjkajočega ključa namesto, da bi se pojavila napaka »KeyError«, je za neobstoječi ključ na voljo privzeta vrednost. Sintaksa defaultdict je naslednja:

defaultdict (default_factory)

Funkcija defaultdict kot argument vzame parameter default_factory. Funkcija default_factory vrne privzeto vrednost za definirano defaultdict. Če poskusimo dostopiti ali spremeniti ključ, ki manjka, potem funkcija default_factory vrne privzeto vrednost kot rezultat. Če manjka funkcija default_factory, bo defaultdic sprožil napako »KeyError«, če manjkajo ključi.

Najprej bomo v naš skript Python implementirali privzeti ključ za dostop do obstoječih in manjkajočih ključev.

#import default default iz zbirnega modula
iz zbirk import defaultdict
#defining funkcije za vrnitev privzete vrednosti
def my_func ():
print ("Ključ ni določen")
#creating a defualtdict
# passing my_func () kot argument za privzeto razsodbo
my_dict = defaultdict (my_func)
#definiranje ključev in vrednosti
my_dict [1] = "Pozdravljeni"
my_dict [2] = "Dobrodošli"
my_dict [3] = "LinuxHint"
#accessing the values ​​using keys
natisni (my_dict [1])
natisni (my_dict [2])
natisni (my_dict [3])
# dostop do manjkajočega ali nedoločenega ključa
my_dict [4]

Izhod

Manjka ključ [4]. Torej, namesto da bi povzročil napako »KeyError«, pokliče funkcijo default_factory, ki vrne privzeto vrednost.


Kot parameter default_factory se lahko uporablja tudi lambda funkcija, znana kot anonimna funkcija.

Nato bomo implementirali lambda funkcijo in jo poslali kot argument privzeti razsodbi.

#import default default iz zbirnega modula
iz zbirk import defaultdict
#creating a defualtdict
# podajanje funkcije Lamnda kot argument za privzeto razsodbo
my_dict = defaultdict (lambda: "Ključ ni definiran")
#definiranje ključev in vrednosti
my_dict [1] = "Pozdravljeni"
my_dict [2] = "Dobrodošli"
my_dict [3] = "LinuxHint"
#accessing the values ​​using keys
natisni (my_dict [1])
natisni (my_dict [2])
natisni (my_dict [3])
# dostop do manjkajočega ali nedoločenega ključa
natisni (my_dict [4])

Defaultdict prikliče default_factory, da poda privzeto vrednost, funkcija __missing () __ pa privzeto vrednost. Funkcija __missing () __ je vgrajena funkcija v Pythonu, ki kot argument vzame parameter default_factory. Če parameter default_factory ni definiran, funkcija __missing () __ sproži napako »KeyError«.

Tu bomo uporabili funkcijo __missing () __ v našem skriptu Python.

#import default default iz zbirnega modula
iz zbirk import defaultdict
#defining funkcije za vrnitev privzete vrednosti
def my_func ():
print ("Ključ ni določen")
#creating a defualtdict
# passing my_func () kot argument za privzeto razsodbo
my_dict = defaultdict (my_func)
#definiranje ključev in vrednosti
my_dict [1] = "LinuxHint"
#accessing the values ​​using keys
natisni (my_dict [1])
# dostop do manjkajočega ali nedoločenega ključa
my_dict.__pogrešano __ (2)

Izhod

Razrede seznamov in int lahko uporabite tudi kot parametra default_factory z defaultdict.

Seznam kot privzeti tovarniški parameter

Privzeta sodba se ustvari z vrednostmi seznama, ko se razredu seznama posreduje parameter default_factory.

#import default default iz zbirnega modula
iz zbirk import defaultdict
# definiranje privzete razsodbe
# predaja razred seznama kot privzeto tovarno
my_dict = defaultdict (seznam)
za i v območju (7):
moj_presoja [i].dodaj (i)
#printing vrednosti
natisni (my_dict)

Izhod

Rezultat prikazuje vrednosti na seznamu. Kot lahko vidite, je bila ustvarjena privzeta sodba, ki vsebuje ključ in vrednosti.

Cela števila kot privzeti_fabrični parameter

Če razred int posredujemo kot parameter default_factory, potem lahko ustvarimo privzeto sodbo, ki vsebuje samo cela števila. Ustvarili bomo seznam celih števil in ga nato shranili v privzeto razsodbo.

#import default default iz zbirnega modula
iz zbirk import defaultdict
# definiranje privzete razsodbe
# predaja razred int kot privzeto tovarno
my_dict = defaultdict (int)
# ustvarjanje seznama celih števil
moj_list = [1,2,3]
za i na my_list:
moj_presoja [i] + = 1
#printing vrednosti
natisni (my_dict)

Izhod

V danem izhodu so celoštevilčne vrednosti pred dvopičjem (:) ključi, medtem ko so celoštevilčne vrednosti za dvopičjem vrednosti.

Zaključek

Dafualtdict je slovarju podoben razred, ki je prisoten v modulu zbirk. Deluje kot slovar Python, vendar ne sproži "KeyError", če ključa ne najdemo. Ta članek podrobno razlaga zamudno sodbo z različnimi primeri.

Kako povečati FPS v Linuxu?
FPS pomeni Število sličic na sekundo. Naloga FPS je merjenje hitrosti sličic pri predvajanju video posnetkov ali igranih predstavah. Z enostavnimi bes...
Najboljše laboratorijske igre Oculus App
Če ste lastnik slušalk Oculus, morate biti seznanjeni s stranskim nalaganjem. Sideloading je postopek namestitve vsebine, ki ni shranjena v slušalke. ...
10 najboljših iger za igranje v Ubuntuju
Platforma Windows je bila ena izmed prevladujočih platform za igre na srečo zaradi velikega odstotka iger, ki se danes razvijajo za naravno podporo si...