logo

Noklusējuma diktāts Python

Vārdnīca ir nesakārtota Python datu vērtību kolekcija, ko izmanto datu vērtību, piemēram, karšu, glabāšanai. Vārdnīcā ir atslēgu un vērtību pāri, nevis viena vērtība kā elements, tāpat kā citi datu veidi. Vārdnīcā ieviestajai atslēgai jābūt unikālai un nemainīgai. Tas ir, Python kortežs var būt atslēga, bet Python saraksts nevar būt atslēga vārdnīcā. Mēs varam izveidot vārdnīcu, ievietojot elementu secību cirtainajās iekavās {}, komats ',' var atdalīt vērtības.

1. piemērs:

 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]) 

Izvade:

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

Bet, ja mēģināsim izdrukāt 5. atslēgas vērtību, mēs saņemsim kļūdu, jo 'Dict_1' nesatur 5. atslēgas vērtību.

2. piemērs:

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

Izvade:

 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 

Ikreiz, kad atslēgas kļūda tiek paaugstināts, tas var kļūt par problēmu lietotājiem. Mēs varam pārvarēt šo kļūdu, izmantojot citu Python vārdnīcu, kas ir kā konteiners, kas pazīstams kā Defaultdict . Lietotāji var atrast šo vārdnīcu iekšā 'kolekcijas' modulis.

noklusējuma diktāts

Noklusējuma diktāts ir Python vārdnīca, kas ir kā konteiners, kas atrodas modulī “kolekcijas”. Tā ir vārdnīcas klases apakšklase, ko izmanto vārdnīcai līdzīga objekta atgriešanai. Gan defaultdict, gan vārdnīcai ir viena un tā pati funkcionalitāte, izņemot to, ka defaultdict nekad neizraisa KeyError, jo tā nodrošina atslēgas noklusējuma vērtību, kas neeksistē lietotāja izveidotajā vārdnīcā.

Sintakse:

 defaultdict(default_factory) 

Parametri:

    default_factory:Funkcija default_factory() atgriež lietotāja iestatīto noklusējuma vērtību viņa definētajai vārdnīcai. Ja šī argumenta nav, vārdnīca parādīs KeyError.

Piemērs:

 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']) 

Izvade:

 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 

Noklusējuma diktatora iekšējais darbs

Lietojot defaultdict, papildus standarta vārdnīcas darbībām mēs iegūstam papildu rakstāmu gadījumu mainīgo un vienu metodi. Rakstāmais instances mainīgais ir default_factory parametrs un __trūkst__ ir metode.

    default_factory:Funkcija default_factory() atgriež lietotāja iestatīto noklusējuma vērtību viņa definētajai vārdnīcai.

Piemērs:

 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']) 

Izvade:

 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>
    __trūkst__():Funkcija __missing__() tiek izmantota, lai vārdnīcai nodrošinātu noklusējuma vērtību. Funkcija __missing__() izmanto default_factory kā argumentu, un, ja arguments ir iestatīts uz None, tiks parādīts KeyError; pretējā gadījumā tas nodrošinās noklusējuma vērtību dotajai atslēgai. Šo metodi būtībā sauc par __getitem__() dict klases funkcija, ja pieprasītā atslēga netiek atrasta. Funkcija __getitem__() paaugstina vai atgriež vērtību, kas atrodas funkcijā __missing__().

Piemērs:

 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;)) 

Izvade:

 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>

Kā lietot 'Sarakstu' kā default_factory

Mēs varam nodot saraksta klasi kā default_factory argumentu, un tas izveidos noklusējuma diktātu ar vērtībām, kas ir iestatītas saraksta formātā.

Piemērs:

 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) 

Izvade:

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

Kā lietot 'int' kā default_factory

Mēs varam nodot int klasi kā argumentu default_factory, un tas izveidos defaultdict ar noklusējuma vērtību, kas iestatīta kā nulle.

Piemērs:

 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) 

Izvade:

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

Secinājums

Šajā apmācībā mēs esam apsprieduši noklusējuma diktātu Python un to, kā mēs varam veikt dažādas darbības ar defaultdict, izmantojot parametru default_factory.