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:
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ä.
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>, {'ABC': 1, 'DEF': 2, 'GHI': 3, 'JKL': 4}) key value 1: 1 key value 3: 3 key value 5: This key is not present </function>
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.__missing__('ABC')) print ('key value 4: ', dict_1['JKL']) print ('key value 5: ', dict_1.__missing__('MNO'))
Lähtö:
Dictionary: defaultdict(<function at 0x0000019efc4b5670>, {'ABC': 1, 'DEF': 2, 'GHI': 3, 'JKL': 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 ('Dictionary with values as list:') 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 'J' # 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.