logo

Oletusasetus Pythonissa

Sanakirja on Pythonin tietoarvojen järjestämätön kokoelma, jota käytetään data-arvojen, kuten karttojen, tallentamiseen. Sanakirja sisältää avain-arvo-pareja sen sijaan, että se säilyttäisi yksittäisen arvon elementtinä muiden tietotyyppien tapaan. Sanakirjassa toteutetun avaimen on oltava ainutlaatuinen ja muuttumaton. Toisin sanoen Python-tuple voi olla avain, mutta Python-luettelo ei voi olla avain sanakirjassa. Voimme luoda sanakirjan asettamalla elementtisarjan kiharahakasulkeisiin {}, pilkku ',' voi erottaa arvot.

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

Lähtö:

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

Mutta jos yritämme tulostaa viidennen avaimen arvon, saamme virheen, koska 'Dict_1' ei sisällä viidennen avaimen arvoa.

Esimerkki 2:

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

Lähtö:

 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 

Aina kun avainvirhe nostetaan esiin, siitä voi tulla käyttäjille ongelma. Voimme voittaa tämän virheen käyttämällä toista Python-sanakirjaa, joka on kuin kontti, joka tunnetaan nimellä Defaultdict . Käyttäjät voivat löytää tämän sanakirjan sisältä 'kokoelmat' moduuli.

oletussääntö

Oletussana on Python-sanakirja, joka on kuin kokoelmat-moduulin sisällä oleva kontti. Se on sanakirjaluokan alaluokka, jota käytetään sanakirjamaisen objektin palauttamiseen. Sekä defaultdictillä että sanakirjalla on samat toiminnot, paitsi että defaultdict ei koskaan aiheuta KeyErroria, koska se tarjoaa avaimelle oletusarvon, jota ei ole käyttäjän luomassa sanakirjassa.

Syntaksi:

 defaultdict(default_factory) 

Parametrit:

    oletustehdas:Funktio default_factory() palauttaa oletusarvon, jonka käyttäjä on määritellylle sanakirjalle asettanut. Jos tämä argumentti puuttuu, sanakirja nostaa KeyErrorin.

Esimerkki:

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

Lähtö:

 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 

Defaultdictin sisäinen toiminta

Kun käytämme defaultdictiä, saamme ylimääräisen kirjoitettavan ilmentymämuuttujan ja yhden menetelmän tavallisten sanakirjatoimintojen lisäksi. Kirjoitettava ilmentymän muuttuja on default_factory-parametri ja __puuttuu__ on menetelmä.

    oletustehdas:Funktio default_factory() palauttaa oletusarvon, jonka käyttäjä on määritellylle sanakirjalle asettanut.

Esimerkki:

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

Lähtö:

 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>
    __puuttuu__():Funktiota __missing__() käytetään oletusarvon antamiseen sanakirjalle. Funktio __missing__() ottaa oletustehdasarvon argumenttina, ja jos argumentin arvoksi on asetettu Ei mitään, KeyError herättää; muuten se tarjoaa oletusarvon annetulle avaimelle. Tätä menetelmää kutsutaan olennaisesti __getitem__() dict-luokan toiminto, kun pyydettyä avainta ei löydy. Funktio __getitem__() nostaa tai palauttaa arvon, joka on __missing__()-funktiossa.

Esimerkki:

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

Lähtö:

 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>

Kuinka käyttää 'Listaa' oletustehdasarvona

Voimme välittää listaluokan default_factory-argumenttina, ja se luo oletussanan arvoilla, jotka on asetettu listamuotoon.

Esimerkki:

 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) 

Lähtö:

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

Kuinka käyttää int-parametria default_factory-arvona

Voimme välittää int-luokan default_factory-argumenttina, ja se luo oletussuojan, jonka oletusarvo on nolla.

Esimerkki:

 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) 

Lähtö:

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

Johtopäätös

Tässä opetusohjelmassa olemme keskustelleet Pythonin defaultdictistä ja siitä, kuinka voimme suorittaa erilaisia ​​​​toimintoja defaultdictille käyttämällä default_factory-parametria.