logo

Defaultdict v Pythone

Slovník je neusporiadaná zbierka údajových hodnôt v Pythone používaná na ukladanie údajových hodnôt, ako sú mapy. Slovník obsahuje páry kľúč-hodnota namiesto jednej hodnoty ako prvku ako iné typy údajov. Kľúč implementovaný v slovníku musí byť jedinečný a nemenný. To znamená, že pythonovská n-tica môže byť kľúčom, ale pythonovský zoznam nemôže byť kľúčom v slovníku. Slovník môžeme vytvoriť umiestnením sekvencie prvkov do zložených zátvoriek {}, pričom čiarkou ',' možno oddeliť hodnoty.

Príklad 1:

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

Výkon:

java porovnávať reťazce
 Dictionary: {1: 'A', 2: 'B', 3: 'C', 4: 'D'} key pair 1: A key pair 3: C 

Ak sa však pokúsime vytlačiť 5. hodnotu kľúča, dostaneme chybu, pretože 'Dict_1' neobsahuje 5. hodnotu kľúča.

Príklad 2:

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

Výkon:

 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 

Kedykoľvek keyError sa môže stať problémom pre používateľov. Túto chybu môžeme prekonať použitím iného slovníka Pythonu, ktorý je ako kontajner známy ako Defaultdict . Používatelia môžu nájsť tento slovník vo vnútri 'kolekcie' modul.

defaultdict

Defaultdict je slovník Pythonu, ktorý je ako kontajner prítomný v module 'collections'. Je to podtrieda triedy slovník, ktorá sa používa na vrátenie objektu podobného slovníku. Defaultdict aj dictionary majú rovnakú funkcionalitu, okrem toho defaultdict nikdy nevyvoláva žiadnu KeyError, pretože poskytuje predvolenú hodnotu pre kľúč, ktorý neexistuje v slovníku vytvorenom používateľom.

Syntax:

 defaultdict(default_factory) 

Parametre:

    default_factory:Funkcia default_factory() vracia predvolenú hodnotu nastavenú používateľom pre ním definovaný slovník. Ak tento argument chýba, slovník vyvolá chybu KeyError.

Príklad:

poštár
 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']) 

Výkon:

 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 

Vnútorné fungovanie defaultdiktu

Keď použijeme defaultdict, získame dodatočnú zapisovateľnú premennú inštancie a jednu metódu okrem štandardných operácií so slovníkom. Premenná inštancie s možnosťou zápisu je parameter default_factory a __chýba__ je metóda.

    default_factory:Funkcia default_factory() vracia predvolenú hodnotu nastavenú používateľom pre ním definovaný slovník.

Príklad:

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

Výkon:

 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>
    __chýba__():Funkcia __missing__() sa používa na poskytnutie predvolenej hodnoty do slovníka. Funkcia __missing__() berie default_factory ako argument a ak je argument nastavený na None, vyvolá sa KeyError; v opačnom prípade poskytne predvolenú hodnotu pre daný kľúč. Táto metóda sa v podstate nazýva __getitem__() funkcia triedy dict, keď sa požadovaný kľúč nenájde. Funkcia __getitem__() zvyšuje alebo vracia hodnotu, ktorá je prítomná vo funkcii __missing__().

Príklad:

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

Výkon:

veľkosť pytóna
 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>

Ako používať „Zoznam“ ako default_factory

Môžeme odovzdať triedu zoznamu ako argument default_factory a ten vytvorí defaultdict s hodnotami, ktoré sú nastavené vo formáte zoznamu.

Príklad:

 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) 

Výkon:

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

Ako používať 'int' ako default_factory

Môžeme odovzdať triedu int ako argument default_factory a vytvorí defaultdict s predvolenou hodnotou nastavenou na nulu.

Príklad:

 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) 

Výkon:

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

Záver

V tomto návode sme diskutovali o defaultdict v Pythone a o tom, ako môžeme vykonávať rôzne operácie s defaultdict pomocou parametra default_factory.