„Python“

„Python“ numatytasis nustatymas

„Python“ numatytasis nustatymas

„Python“ siūlo daugybę įmontuotų duomenų struktūrų, tokių kaip sąrašai, rinkiniai ir žodynai, kad būtų galima efektyviai išsaugoti ir tvarkyti duomenis. Žodynai yra paprastas būdas išsaugoti duomenis kaip pagrindinių reikšmių poras. Raktas veikia kaip indeksas ir naudojamas duomenims gauti. Rakto klavišai turi būti unikalūs ir nekintami visame žodyne. Raktai dažniausiai yra eilutės ir sveiki skaičiai, nors rakto vertė gali būti bet kokio tipo, pvz., Sveikasis skaičius, eilutė, slankiojo kablelio skaičius arba kompleksinis skaičius. Tuo tarpu žodyne gali būti kolekcija, tokia kaip sąrašas, paketas ar koks nors kitas žodyno tipas. „Python“ žodynas sukurtas naudojant garbanotų skliaustų porą, kurioje kiekviena rakto ir vertės pora yra atskirta kableliu.

Ką daryti, jei bandysite pasiekti ar modifikuoti konkretų raktinį žodyną, kurio nėra? Na, šiuo atveju „Python“ vertėjas iškels klaidą „KeyError“ ir nutrauks programos vykdymą.

Pažvelkime į klaidos „KeyError“ pavyzdį.

# žodyno kūrimas
my_dict = 1: "Sveiki", 2: "Sveiki atvykę", 3: "LinuxHint"
# prieiga prie rakto, kurio nėra
mano_diktas [4]

Rezultatas

Norėdami pašalinti šią klaidą, „Python“ pateikia numatytojo tipo tipą - žodyno klasę, kurią galite rasti kolekcijų modulyje. Šiame straipsnyje išsamiai aprašytas „Python“ numatytasis nustatymas.

Defaultdict paaiškinimas ir pavyzdžiai

Pagal nutylėjimą yra „Python“ žodyno alternatyva. Jis pateikia žodyno tipo objektus. Numatytasis diktas yra dikto poklasis. Trūkstamo rakto atveju, užuot iškėlus klaidą „KeyError“, numatytoji reikšmė pateikiama neegzistuojančiam raktui. „Defaultdict“ sintaksė yra tokia:

defaultdict (default_factory)

Funkcija „defaultdict“ kaip argumentą laiko parametrą „default_factory“. Funkcija „default_factory“ grąžina numatytąją apibrėžto „defaultdict“ vertę. Jei bandysime pasiekti ar pakeisti trūkstamą raktą, funkcija „default_factory“ grąžins numatytąją vertę. Jei trūksta default_factory funkcijos, defaultdic iškels klaidą „KeyError“, jei trūksta raktų.

Pirma, mes įdiegsime „defaultdic“ savo „Python“ scenarijuje, kad pasiektume esamus ir trūkstamus raktus.

#import defaultdict iš rinkimo modulio
iš kolekcijų importuoti numatytąjį
#defining funkcija grąžinti numatytąją vertę
def my_func ():
spausdinti ("Raktas nėra apibrėžtas")
#cukro defualtto sukūrimas
#passing my_func () kaip argumentą į defaultdict
my_dict = defaultdict (my_func)
#defining raktai ir reikšmės
my_dict [1] = „Sveiki“
my_dict [2] = "Sveiki atvykę"
my_dict [3] = "LinuxHint"
# prieiga prie verčių naudojant raktus
spausdinti (my_dict [1])
spausdinti (my_dict [2])
spausdinti (my_dict [3])
# prieiga prie trūkstamo ar neapibrėžto rakto
mano_diktas [4]

Rezultatas

Trūksta rakto [4]. Taigi, užuot iškėlęs klaidą „KeyError“, jis iškviečia funkciją default_factory, kuri grąžina numatytąją vertę.


Lambda funkcija, žinoma kaip anoniminė funkcija, taip pat gali būti naudojama kaip parametras default_factory.

Tada įgyvendinsime „lambda“ funkciją ir perduosime ją kaip argumentą į numatytąjį.

#import defaultdict iš rinkimo modulio
iš kolekcijų importuoti numatytąjį
#cukro defualtto sukūrimas
#passing „Lamnda“ funkciją kaip argumentą į defaultdict
my_dict = defaultdict (lambda: "Raktas nėra apibrėžtas")
#definuojant raktus ir reikšmes
my_dict [1] = „Sveiki“
my_dict [2] = "Sveiki atvykę"
my_dict [3] = "LinuxHint"
# prieiga prie verčių naudojant raktus
spausdinti (my_dict [1])
spausdinti (my_dict [2])
spausdinti (my_dict [3])
# prieiga prie trūkstamo ar neapibrėžto rakto
spausdinti (my_dict [4])

„Defaultdict“ iškviečia „default_factory“, kad pateiktų numatytąją vertę, tačiau „__missing () __“ funkcija pateikia numatytąją vertę. Funkcija __missing () __ yra integruota „Python“ funkcija, kuri argumentu laiko parametrą „default_factory“. Jei parametras default_factory nėra apibrėžtas, funkcija __missing () __ kelia klaidą „KeyError“.

Čia savo Python scenarijuje naudosime funkciją __missing () __.

#import defaultdict iš rinkimo modulio
iš kolekcijų importuoti numatytąjį
#defining funkcija grąžinti numatytąją vertę
def my_func ():
spausdinti ("Raktas nėra apibrėžtas")
#cukro defualtto sukūrimas
#passing my_func () kaip argumentą į defaultdict
my_dict = defaultdict (my_func)
#defining raktai ir reikšmės
my_dict [1] = "LinuxHint"
# prieiga prie verčių naudojant raktus
spausdinti (my_dict [1])
# prieiga prie trūkstamo ar neapibrėžto rakto
my_dict.__ praleidau __ (2)

Rezultatas

Sąrašas ir int klasės taip pat gali būti naudojami kaip default_factory parametrai su defaultdict.

Parametras pateikiamas kaip numatytasis

Defaultdict sukuriamas su sąrašo reikšmėmis, kai sąrašo klasei perduodamas parametras default_factory.

#import defaultdict iš rinkimo modulio
iš kolekcijų importuoti numatytąjį
# defaultdict apibrėžimas
# praeina sąrašo klasę kaip numatytąją_teigyklą
my_dict = defaultdict (sąrašas)
i diapazone (7):
my_dict [i].pridėti (i)
# reikšmių spausdinimas
spausdinti (my_dict)

Rezultatas

Išvestyje rodomos sąrašo vertės. Kaip matote, buvo sukurtas numatytasis nurodymas, kuriame yra raktas ir reikšmės.

Sveikieji skaičiai kaip numatytasis_teiksmingas parametras

Jei mes perduodame int klasę kaip default_factory parametrą, galime sukurti defaultdict, kuriame yra tik sveiki skaičiai. Sukursime sveikųjų skaičių sąrašą ir išsaugosime jį pagal nutylėjimą.

#import defaultdict iš rinkimo modulio
iš kolekcijų importuoti numatytąjį
# defaultdict apibrėžimas
# praeina int klasę kaip default_factory
my_dict = defaultdict (int)
#ciskaitų sąrašo sukūrimas
my_list = [1,2,3]
aš i my_list:
my_dict [i] + = 1
# reikšmių spausdinimas
spausdinti (my_dict)

Rezultatas

Pateiktame išvestyje sveiko skaičiaus reikšmės prieš dvitaškį (:) yra raktai, o sveikojo skaičiaus reikšmės po dvitaškio yra reikšmės.

Išvada

„Dafualtdict“ yra į žodyną panaši klasė, esanti kolekcijų modulyje. Jis veikia kaip „Python“ žodynas, tačiau nerandant „KeyError“, kai raktas nerandamas. Šiame straipsnyje išsamiai paaiškinamas numatytasis nustatymas su įvairiais pavyzdžiais.

Kaip atsisiųsti ir paleisti „Sid Meier Civilization VI“ sistemoje „Linux“
Įvadas į žaidimą „Civilization 6“ yra šiuolaikinė klasikinės koncepcijos, pristatytos „Age of Empires“ žaidimų serijoje, koncepcija. Idėja buvo gana p...
Kaip įdiegti ir žaisti „Doom“ sistemoje „Linux“
Įvadas į Doom „Doom“ serija atsirado 90-aisiais, išleidus originalų „Doom“. Tai buvo tiesioginis hitas, o nuo to laiko žaidimų serija gavo daugybę apd...
„Vulkan“, skirta „Linux“ vartotojams
Kiekvienos naujos kartos grafikos plokštės matome, kaip žaidimų kūrėjai peržengia grafinės ištikimybės ribas ir artėja prie fotorealizmo. Nepaisant vi...