Žodynas yra nesutvarkytas Python duomenų reikšmių rinkinys, naudojamas duomenų reikšmėms, pvz., žemėlapiams, saugoti. Žodyne saugomos raktų ir reikšmių poros, o ne viena reikšmė kaip elementas, kaip ir kiti duomenų tipai. Žodyne įdiegtas raktas turi būti unikalus ir nekintantis. Tai reiškia, kad Python eilutė gali būti raktas, bet Python sąrašas negali būti raktas žodyne. Žodyną galime sukurti įdėdami elementų seką į lenktus skliaustus {}, reikšmes gali atskirti kablelis ''.
1 pavyzdys:
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])
Išvestis:
Dictionary: {1: 'A', 2: 'B', 3: 'C', 4: 'D'} key pair 1: A key pair 3: C
Bet jei bandysime atspausdinti 5-ojo rakto reikšmę, gausime klaidą, nes 'Dict_1' nėra 5-ojo rakto reikšmės.
2 pavyzdys:
Dict_1 = {1: 'A', 2: 'B', 3: 'C', 4: 'D'} print ('Dictionary: ') print (Dict_1) print ('key pair 5: ', Dict_1[5])
Išvestis:
pašalinti paskutinį simbolį iš eilutės
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
Kai tik rakto klaida iškyla, tai gali tapti problema vartotojams. Šią klaidą galime įveikti naudodami kitą Python žodyną, kuris yra tarsi konteineris, žinomas kaip Defaultdict . Vartotojai gali rasti šį žodyną viduje 'kolekcijos' modulis.
numatytasis diktatorius
Numatytasis diktatorius yra Python žodynas, kuris yra tarsi konteineris, esantis modulyje „kolekcijos“. Tai žodyno klasės poklasis, naudojamas į žodyną panašiam objektui grąžinti. Tiek defaultdict, tiek žodynas turi tas pačias funkcijas, išskyrus tai, kad numatytasis diktas niekada nekelia jokios KeyError, nes suteikia numatytąją rakto reikšmę, kurios nėra vartotojo sukurtame žodyne.
Sintaksė:
defaultdict(default_factory)
Parametrai:
Pavyzdys:
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'])
Išvestis:
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
Vidinis įsipareigojimų nevykdytojo darbas
Kai naudojame defaultdict, be standartinių žodyno operacijų gauname papildomą rašomąjį egzemplioriaus kintamąjį ir vieną metodą. Įrašomas egzemplioriaus kintamasis yra default_factory parametras ir __dingęs__ yra metodas.
Pavyzdys:
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'])
Išvestis:
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>
Pavyzdys:
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'))
Išvestis:
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>
Kaip naudoti „Sąrašą“ kaip default_factory
Sąrašo klasę galime perduoti kaip argumentą default_factory ir jis sukurs numatytąjį diktą su reikšmėmis, kurios nustatytos sąrašo formatu.
Pavyzdys:
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)
Išvestis:
Dictionary with values as list: defaultdict(, {7: [7], 8: [8], 9: [9], 10: [10], 11: [11]})
Kaip naudoti „int“ kaip default_factory
Int klasę galime perduoti kaip argumentą default_factory, ir tai sukurs numatytąjį diktatą, kurio numatytoji vertė nustatyta kaip nulis.
Pavyzdys:
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)
Išvestis:
defaultdict(, {1: 2, 2: 3, 3: 1, 4: 2})
Išvada
Šioje pamokoje aptarėme Python numatytąjį diktavimą ir tai, kaip galime atlikti įvairias su defaultdict operacijas naudodami parametrą default_factory.
nelygus rąstas