logo

Numatytasis diktatorius Python

Žodynas yra nesutvarkytas Python duomenų reikšmių rinkinys, naudojamas duomenų reikšmėms, pvz., žemėlapiams, saugoti. Žodyne saugomos raktų ir reikšmių poros, o ne viena reikšmė kaip elementas, kaip ir kiti duomenų tipai. Žodyne įdiegtas raktas turi būti unikalus ir nekintantis. Tai reiškia, kad Python eilutė gali būti raktas, bet Python sąrašas negali būti raktas žodyne. Žodyną galime sukurti įdėdami elementų seką į lenktus skliaustus {}, reikšmes gali atskirti kablelis ''.

1 pavyzdys:

 Dict_1 = {1: 'A', 2: 'B', 3: 'C', 4: 'D'} print ('Dictionary: ') print (Dict_1) print ('key pair 1: ', Dict_1[1]) print ('key pair 3: ', Dict_1[3]) 

Išvestis:

 Dictionary: {1: 'A', 2: 'B', 3: 'C', 4: 'D'} key pair 1: A key pair 3: C 

Bet jei bandysime atspausdinti 5-ojo rakto reikšmę, gausime klaidą, nes 'Dict_1' nėra 5-ojo rakto reikšmės.

2 pavyzdys:

 Dict_1 = {1: 'A', 2: 'B', 3: 'C', 4: 'D'} print ('Dictionary: ') print (Dict_1) print ('key pair 5: ', Dict_1[5]) 

Išvestis:

pašalinti paskutinį simbolį iš eilutės
 Dictionary: {1: 'A', 2: 'B', 3: 'C', 4: 'D'} --------------------------------------------------------------------------- KeyError Traceback (most recent call last) in 2 print ('Dictionary: ') 3 print (Dict_1) ----> 4 print ('key pair 5: ', Dict_1[5]) KeyError: 5 

Kai tik rakto klaida iškyla, tai gali tapti problema vartotojams. Šią klaidą galime įveikti naudodami kitą Python žodyną, kuris yra tarsi konteineris, žinomas kaip Defaultdict . Vartotojai gali rasti šį žodyną viduje 'kolekcijos' modulis.

numatytasis diktatorius

Numatytasis diktatorius yra Python žodynas, kuris yra tarsi konteineris, esantis modulyje „kolekcijos“. Tai žodyno klasės poklasis, naudojamas į žodyną panašiam objektui grąžinti. Tiek defaultdict, tiek žodynas turi tas pačias funkcijas, išskyrus tai, kad numatytasis diktas niekada nekelia jokios KeyError, nes suteikia numatytąją rakto reikšmę, kurios nėra vartotojo sukurtame žodyne.

Sintaksė:

 defaultdict(default_factory) 

Parametrai:

    default_factory:Funkcija default_factory() grąžina numatytąją reikšmę, kurią vartotojas nustatė jo apibrėžtam žodynui. Jei šio argumento nėra, žodynas iškels KeyError.

Pavyzdys:

 from collections import defaultdict as DD # Function for returning a default values for the # keys which are not present in the dictionary def default_value(): return 'This key is not present' # Now, we will define the dict dict_1 = DD(default_value) dict_1['ABC'] = 1 dict_1['DEF'] = 2 dict_1['GHI'] = 3 dict_1['JKL'] = 4 print ('Dictionary: ') print (dict_1) print ('key pair 1: ', dict_1['ABC']) print ('key pair 3: ', dict_1['GHI']) print ('key pair 5: ', dict_1['MNO']) 

Išvestis:

 Dictionary: defaultdict(, {'ABC': 1, 'DEF': 2, 'GHI': 3, 'JKL': 4}) key pair 1: 1 key pair 3: 3 key pair 5: This key is not present 

Vidinis įsipareigojimų nevykdytojo darbas

Kai naudojame defaultdict, be standartinių žodyno operacijų gauname papildomą rašomąjį egzemplioriaus kintamąjį ir vieną metodą. Įrašomas egzemplioriaus kintamasis yra default_factory parametras ir __dingęs__ yra metodas.

    default_factory:Funkcija default_factory() grąžina numatytąją reikšmę, kurią vartotojas nustatė jo apibrėžtam žodynui.

Pavyzdys:

 from collections import defaultdict as DD dict_1 = DD(lambda: 'This key is not present') dict_1['ABC'] = 1 dict_1['DEF'] = 2 dict_1['GHI'] = 3 dict_1['JKL'] = 4 print ('Dictionary: ') print (dict_1) print ('key value 1: ', dict_1['ABC']) print ('key value 3: ', dict_1['GHI']) print ('key value 5: ', dict_1['MNO']) 

Išvestis:

 Dictionary: defaultdict(<function at 0x0000019efc4b58b0>, {&apos;ABC&apos;: 1, &apos;DEF&apos;: 2, &apos;GHI&apos;: 3, &apos;JKL&apos;: 4}) key value 1: 1 key value 3: 3 key value 5: This key is not present </function>
    __dingęs__():Funkcija __missing__() naudojama numatytajai žodyno vertei pateikti. Funkcija __missing__() naudoja default_factory kaip argumentą, o jei argumentas nustatytas į None, atsiras KeyError; kitu atveju ji pateiks numatytąją nurodyto rakto reikšmę. Šis metodas iš esmės vadinamas __getitem__() diktavimo klasės funkcija, kai prašomas raktas nerastas. Funkcija __getitem__() padidina arba grąžina reikšmę, esančią funkcijoje __missing__().

Pavyzdys:

 from collections import defaultdict as DD dict_1 = DD(lambda: &apos;This key is not present&apos;) dict_1[&apos;ABC&apos;] = 1 dict_1[&apos;DEF&apos;] = 2 dict_1[&apos;GHI&apos;] = 3 dict_1[&apos;JKL&apos;] = 4 print (&apos;Dictionary: &apos;) print (dict_1) print (&apos;key value 1: &apos;, dict_1.__missing__(&apos;ABC&apos;)) print (&apos;key value 4: &apos;, dict_1[&apos;JKL&apos;]) print (&apos;key value 5: &apos;, dict_1.__missing__(&apos;MNO&apos;)) 

Išvestis:

 Dictionary: defaultdict(<function at 0x0000019efc4b5670>, {&apos;ABC&apos;: 1, &apos;DEF&apos;: 2, &apos;GHI&apos;: 3, &apos;JKL&apos;: 4}) key value 1: This key is not present key value 4: 4 key value 5: This key is not present </function>

Kaip naudoti „Sąrašą“ kaip default_factory

Sąrašo klasę galime perduoti kaip argumentą default_factory ir jis sukurs numatytąjį diktą su reikšmėmis, kurios nustatytos sąrašo formatu.

Pavyzdys:

 from collections import defaultdict as DD # Defining a dictionary dict_1 = DD(list) for k in range(7, 12): dict_1[k].append(k) print (&apos;Dictionary with values as list:&apos;) print (dict_1) 

Išvestis:

 Dictionary with values as list: defaultdict(, {7: [7], 8: [8], 9: [9], 10: [10], 11: [11]}) 

Kaip naudoti „int“ kaip default_factory

Int klasę galime perduoti kaip argumentą default_factory, ir tai sukurs numatytąjį diktatą, kurio numatytoji vertė nustatyta kaip nulis.

Pavyzdys:

 from collections import defaultdict as DD # Defining the dict dict_1 = DD(int) J = [1, 2, 3, 4, 2, 4, 1, 2] # Now, we will iterate through the list &apos;J&apos; # for keeping the count for k in J: # As, The default value is 0 # so we do not need to # enter the key first dict_1[k] += 1 print(dict_1) 

Išvestis:

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

Išvada

Šioje pamokoje aptarėme Python numatytąjį diktavimą ir tai, kaip galime atlikti įvairias su defaultdict operacijas naudodami parametrą default_factory.

nelygus rąstas