Slovar je neurejena zbirka podatkovnih vrednosti v Pythonu, ki se uporablja za shranjevanje podatkovnih vrednosti, kot so zemljevidi. Slovar vsebuje pare ključ-vrednost namesto ene same vrednosti kot elementa kot drugi tipi podatkov. Ključ, implementiran v slovar, mora biti edinstven in nespremenljiv. To pomeni, da je Python tuple lahko ključ, vendar seznam Python ne more biti ključ v slovarju. Slovar lahko ustvarimo tako, da zaporedje elementov postavimo znotraj zavitih oklepajev {}, vejica ',' lahko loči vrednosti.
Primer 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])
Izhod:
Dictionary: {1: 'A', 2: 'B', 3: 'C', 4: 'D'} key pair 1: A key pair 3: C
Če pa poskušamo natisniti peto vrednost ključa, bomo dobili napako, ker 'Dict_1' ne vsebuje 5. ključne vrednosti.
Primer 2:
Dict_1 = {1: 'A', 2: 'B', 3: 'C', 4: 'D'} print ('Dictionary: ') print (Dict_1) print ('key pair 5: ', Dict_1[5])
Izhod:
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
Kadar koli keyError dvigne, lahko postane težava za uporabnike. To napako lahko odpravimo z uporabo drugega slovarja Python, ki je kot vsebnik, znan kot Defaultdict . Uporabniki lahko najdejo ta slovar znotraj 'zbirke' modul.
defaultdict
Privzeti ukaz je slovar Pythona, ki je kot vsebnik znotraj modula 'zbirke'. Je podrazred razreda slovarja, ki se uporablja za vrnitev objekta, podobnega slovarju. Tako defaultdict kot slovar imata enako funkcionalnost, le da defaultdict nikoli ne sproži nobene KeyError, saj zagotavlja privzeto vrednost za ključ, ki ne obstaja v slovarju, ki ga ustvari uporabnik.
Sintaksa:
defaultdict(default_factory)
Parametri:
primer:
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'])
Izhod:
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
Notranje delovanje defaultdict
Ko uporabimo defaultdict, dobimo dodatno zapisljivo spremenljivko primerka in eno metodo poleg standardnih slovarskih operacij. Zapisljiva spremenljivka primerka je parameter default_factory in __manjka__ je metoda.
primer:
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'])
Izhod:
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>
primer:
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'))
Izhod:
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>
Kako uporabiti 'List' kot default_factory
Razred seznama lahko posredujemo kot argument default_factory in ustvaril bo defaultdict z vrednostmi, ki so nastavljene v obliki seznama.
primer:
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)
Izhod:
Dictionary with values as list: defaultdict(, {7: [7], 8: [8], 9: [9], 10: [10], 11: [11]})
Kako uporabiti 'int' kot default_factory
Razred int lahko posredujemo kot argument default_factory in ustvaril bo defaultdict s privzeto vrednostjo, nastavljeno na nič.
primer:
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)
Izhod:
defaultdict(, {1: 2, 2: 3, 3: 1, 4: 2})
Zaključek
V tej vadnici smo razpravljali o defaultdict v Pythonu in o tem, kako lahko izvajamo različne operacije na defaultdict z uporabo parametra default_factory.