logo

Numatytasis diktatorius Python

Žodynas Python yra netvarkingas duomenų reikšmių rinkinys, naudojamas duomenų reikšmėms saugoti, pavyzdžiui, žemėlapiui. Skirtingai nuo kitų duomenų tipų, kurių elementas turi tik vieną reikšmę, žodyne yra rakto ir reikšmių pora. Žodyne raktas turi būti unikalus ir nekintamas. Tai reiškia, kad „Python Tuple“ gali būti raktas, o „Python“ sąrašas – ne. Žodyną galima sukurti įdėjus elementų seką į riestinius {} skliaustus, atskirtus kableliu.

Pavyzdys:



Python3






# Python program to demonstrate> # dictionary> > > Dict> => {>1>:>'Geeks'>,>2>:>'For'>,>3>:>'Geeks'>}> print>(>'Dictionary:'>)> print>(>Dict>)> print>(>Dict>[>1>])> > # Uncommenting this print(Dict[4])> # will raise a KeyError as the> # 4 is not present in the dictionary>



>

>

Išvestis:

Dictionary: {1: 'Geeks', 2: 'For', 3: 'Geeks'} Geeks>
Traceback (most recent call last): File '/home/1ca83108cc81344dc7137900693ced08.py', line 11, in print(Dict[4]) KeyError: 4>

Kartais, kai iškeliamas KeyError, tai gali tapti problema. Norėdami tai įveikti, Python pristato kitą žodyną, pavyzdžiui, konteinerį, žinomą kaip Defaultdict kuri yra kolekcijų modulyje.
Pastaba: Norėdami gauti daugiau informacijos, žr Python žodynas .

DefaultDict

Defaultdict yra kaip konteineris žodynai yra modulyje kolekcijos . Defaultdict yra žodyno klasės poklasis, kuris pateikia į žodyną panašų objektą. Tiek žodynų, tiek numatytojo diktavimo funkcijos yra beveik tokios pačios, išskyrus tai, kad numatytasis diktavimas niekada nekelia KeyError. Jame pateikiama numatytoji rakto, kurio nėra, reikšmė.

Sintaksė: numatytasis diktas (numatytasis_gamykla)
Parametrai:

    default_factory: funkcija, grąžinanti numatytąją apibrėžto žodyno reikšmę. Jei šio argumento nėra, žodynas iškelia KeyError.

Pavyzdys:

Python3




# Python program to demonstrate> # defaultdict> > > from> collections>import> defaultdict> > > # Function to return a default> # values for keys that is not> # present> def> def_value():> >return> 'Not Present'> > # Defining the dict> d>=> defaultdict(def_value)> d[>'a'>]>=> 1> d[>'b'>]>=> 2> > print>(d[>'a'>])> print>(d[>'b'>])> print>(d[>'c'>])>

>

>

Išvestis:

1 2 Not Present>

Vidinis įsipareigojimų nevykdytojo darbas

„Defaultdict“ be standartinių žodyno operacijų prideda vieną rašomą egzemplioriaus kintamąjį ir vieną metodą. Pavyzdžio kintamasis yra default_factory parametras, o pateiktas metodas yra __trūksta__.

    Default_factory: tai funkcija, grąžinanti numatytąją apibrėžto žodyno reikšmę. Jei šio argumento nėra, žodynas iškelia KeyError.
    Pavyzdys:

Python3


pašalinti paskutinį simbolį iš eilutės



# Python program to demonstrate> # default_factory argument of> # defaultdict> > > from> collections>import> defaultdict> > > # Defining the dict and passing> # lambda as default_factory argument> d>=> defaultdict(>lambda>:>'Not Present'>)> d[>'a'>]>=> 1> d[>'b'>]>=> 2> > print>(d[>'a'>])> print>(d[>'b'>])> print>(d[>'c'>])>

>

>

Išvestis:

1 2 Not Present>
    __trūksta__(): ši funkcija naudojama numatytajai žodyno vertei pateikti. Ši funkcija kaip argumentą naudoja default_factory ir, jei šis argumentas yra None, iškeliama KeyError, kitaip ji pateikia numatytąją nurodyto rakto reikšmę. Šis metodas iš esmės iškviečiamas diktavimo klasės metodu __getitem__(), kai prašomas raktas nerandamas. __getitem__() padidina arba grąžina vertę, kurią grąžina __trūksta__(). metodas.
    Pavyzdys:

Python3




# Python program to demonstrate> # defaultdict> > > from> collections>import> defaultdict> > > # Defining the dict> d>=> defaultdict(>lambda>:>'Not Present'>)> d[>'a'>]>=> 1> d[>'b'>]>=> 2> > # Provides the default value> # for the key> print>(d.__missing__(>'a'>))> print>(d.__missing__(>'d'>))>

>

>

Išvestis:

Not Present Not Present>

Sąrašo naudojimas kaip default_factory

Kai sąrašo klasė perduodama kaip argumentas default_factory, tada sukuriamas numatytasis diktas su reikšmėmis, kurios yra sąrašas.
Pavyzdys:

Python3




# Python program to demonstrate> # defaultdict> > > from> collections>import> defaultdict> > > # Defining a dict> d>=> defaultdict(>list>)> > for> i>in> range>(>5>):> >d[i].append(i)> > print>(>'Dictionary with values as list:'>)> print>(d)>

>

nelygus rąstas

>

Išvestis:

Dictionary with values as list: defaultdict(, {0: [0], 1: [1], 2: [2], 3: [3], 4: [4]})>

Naudojant int kaip default_factory

Kai int klasė perduodama kaip argumentas default_factory, sukuriamas numatytasis diktatorius, kurio numatytoji vertė yra nulis.
Pavyzdys:

Python3




# Python program to demonstrate> # defaultdict> > > from> collections>import> defaultdict> > > # Defining the dict> d>=> defaultdict(>int>)> > L>=> [>1>,>2>,>3>,>4>,>2>,>4>,>1>,>2>]> > # Iterate through the list> # for keeping the count> for> i>in> L:> > ># The default value is 0> ># so there is no need to> ># enter the key first> >d[i]>+>=> 1> > print>(d)>

>

>

Išvestis:

defaultdict(, {1: 2, 2: 3, 3: 1, 4: 2})>