Python

Python defaultdict

Python defaultdict

Python piedāvā daudzas iebūvētas datu struktūras, piemēram, sarakstus, kopas un vārdnīcas, lai efektīvi saglabātu un pārvaldītu datus. Vārdnīcas nodrošina vienkāršu veidu, kā saglabāt datus kā atslēgu un vērtību pārus. Atslēga darbojas kā indekss, un to izmanto, lai izgūtu datus. Taustiņiem jābūt unikāliem un nemainīgiem visā vārdnīcā. Atslēgas galvenokārt ir virknes un veseli skaitļi, lai gan atslēgas vērtība varētu būt jebkura veida, piemēram, vesels skaitlis, virkne, peldošā komata vai komplekss skaitlis. Tikmēr vārdnīcā var būt kolekcija, piemēram, saraksts, kopa vai kāda cita veida vārdnīca. Vārdnīca Python tiek izveidota, izmantojot cirtaino iekavu pāri, kurā katrs atslēgas un vērtības pāris ir atdalīts ar komatu.

Ko darīt, ja mēģināt piekļūt noteiktai atslēgai vai pārveidot to vārdnīcā, kuras nav? Nu, šajā gadījumā Python tulks paaugstinās kļūdu “KeyError” un pārtrauks programmas izpildi.

Apskatīsim kļūdas “KeyError” piemēru.

# vārdnīcas izveide
my_dict = 1: "Labdien", 2: "Laipni lūdzam", 3: "LinuxHint"
# piekļūt atslēgai, kas neeksistē
mans_dikts [4]

Rezultāts

Lai novērstu šo kļūdu, Python nodrošina defaultdict tipu, vārdnīcas klasi, kuru var atrast kolekciju modulī. Šajā rakstā detalizēti aprakstīts Python noklusējuma parametrs.

Defaultdict paskaidrojums un piemēri

Defaultdict ir Python vārdnīcas alternatīva. Tas atgriež vārdnīcas tipa objektus. Defictdict ir apakšklase dict. Trūkstošas ​​atslēgas vietā, nevis paaugstinot kļūdu “KeyError”, noklusētajai atslēgai tiek norādīta noklusējuma vērtība. Defaultdict sintakse ir šāda:

defaultdict (default_factory)

Funkcija defaultdict kā argumentu ņem parametru default_factory. Funkcija default_factory atgriež definētā defaultdict noklusējuma vērtību. Ja mēs mēģinām piekļūt trūkstošai atslēgai vai modificēt to, funkcija default_factory atgriež noklusējuma vērtību. Ja trūkst funkcijas default_factory, tad defaultdic radīs kļūdu “KeyError”, ja trūkst atslēgu.

Pirmkārt, mēs savā Python skriptā ieviesīsim defaultdic, lai piekļūtu gan esošajām, gan trūkstošajām atslēgām.

#import defaultdict no kolekcijas moduļa
no kolekcijām importēt noklusējuma
#defining funkcija, lai atgrieztu noklusējuma vērtību
def my_func ():
drukāt ("atslēga nav definēta")
# radot defualtdict
#passing my_func () kā argumentu defaultdict
my_dict = defaultdict (my_func)
#definējot atslēgas un vērtības
my_dict [1] = "Sveiki"
my_dict [2] = "Laipni lūdzam"
my_dict [3] = "LinuxHint"
# piekļūt vērtībām, izmantojot taustiņus
izdrukāt (my_dict [1])
izdrukāt (my_dict [2])
izdrukāt (my_dict [3])
# piekļūt trūkstošai vai nenoteiktai atslēgai
mans_dikts [4]

Rezultāts

[4] trūkst atslēgas. Tātad, tā vietā, lai paaugstinātu kļūdu “KeyError”, tā izsauc funkciju default_factory, kas atgriež noklusējuma vērtību.


Kā parametru default_factory var izmantot arī lambda funkciju, kas pazīstama kā anonīma funkcija.

Tālāk mēs ieviesīsim lambda funkciju un nodosim to kā argumentu defaultdict.

#import defaultdict no kolekcijas moduļa
no kolekcijām importēt noklusējuma
# radot defualtdict
#passing funkciju Lamnda kā argumentu defaultdict
my_dict = defaultdict (lambda: "atslēga nav definēta")
#definējot atslēgas un vērtības
my_dict [1] = "Sveiki"
my_dict [2] = "Laipni lūdzam"
my_dict [3] = "LinuxHint"
# piekļūt vērtībām, izmantojot taustiņus
izdrukāt (mans_dikts [1])
izdrukāt (mans_dikts [2])
izdrukāt (my_dict [3])
# piekļūt trūkstošai vai nenoteiktai atslēgai
izdrukāt (my_dict [4])

Defaultdict izsauc default_factory, lai norādītu noklusējuma vērtību, bet funkcija __missing () __ nodrošina noklusējuma vērtību. Funkcija __missing () __ ir Python iebūvēta funkcija, kas par argumentu uzskata parametru default_factory. Ja parametrs default_factory nav definēts, funkcija __missing () __ rada kļūdu “KeyError”.

Šeit mēs izmantosim funkciju __missing () __ mūsu Python skriptā.

#import defaultdict no kolekcijas moduļa
no kolekcijām importēt noklusējuma
#defining funkcija, lai atgrieztu noklusējuma vērtību
def my_func ():
drukāt ("atslēga nav definēta")
# radot defualtdict
#passing my_func () kā argumentu defaultdict
my_dict = defaultdict (my_func)
#definējot atslēgas un vērtības
my_dict [1] = "LinuxHint"
# piekļūt vērtībām, izmantojot taustiņus
izdrukāt (my_dict [1])
# piekļūt trūkstošai vai nenoteiktai atslēgai
my_dict.__ garām __ (2)

Rezultāts

Sarakstu un int klases var izmantot arī kā default_factory parametrus ar defaultdict.

Saraksts kā default_factory parametrs

Defaultdict tiek izveidots ar saraksta vērtībām, kad saraksta klase tiek nodota parametram default_factory.

#import defaultdict no kolekcijas moduļa
no kolekcijām importēt noklusējuma
# defaultdict definēšana
# nokārtota saraksta klase kā default_factory
my_dict = defaultdict (saraksts)
i diapazonā (7):
mans_dikts [i].pievienot (i)
# vērtību drukāšana
izdrukāt (my_dict)

Rezultāts

Izvade parāda vērtības sarakstā. Kā redzat, ir izveidots noklusējuma akts, kurā ir atslēga un vērtības.

Integers kā default_factory parametrs

Ja mēs nododam int klasi kā default_factory parametru, tad mēs varam izveidot defaultdict, kurā ir tikai veseli skaitļi. Mēs izveidosim veselu skaitļu sarakstu un pēc tam saglabāsim to defaultdict.

#import defaultdict no kolekcijas moduļa
no kolekcijām importēt noklusējuma
# defaultdict definēšana
# iziet vidusskolu kā default_factory
my_dict = defaultdict (int)
# veselo skaitļu saraksta izveide
my_list = [1,2,3]
priekš i manā sarakstā:
mans_dikts [i] + = 1
# vērtību drukāšana
izdrukāt (my_dict)

Rezultāts

Dotajā izvadā veselā skaitļa vērtības pirms kolas (:) ir atslēgas, savukārt vesela skaitļa vērtības pēc kolas ir vērtības.

Secinājums

Dafualtdict ir vārdnīcai līdzīga klase, kas atrodas kolekciju modulī. Tas darbojas kā Python vārdnīca, bet, ja atslēga nav atrasta, tā neizvirza “KeyError”. Šis raksts detalizēti izskaidro noklusējuma likumu ar dažādiem piemēriem.

Microsoft Sculpt Touch bezvadu peles apskats
Es nesen lasīju par Microsoft Sculpt Touch bezvadu pele un nolēma to nopirkt. Pēc kāda laika izmantošanas es nolēmu dalīties savā pieredzē ar to. Šo b...
AppyMouse ekrāna skārienpaliktnis un peles rādītājs Windows planšetdatoriem
Planšetdatoru lietotājiem bieži pietrūkst peles rādītāja, it īpaši, ja viņi parasti lieto klēpjdatorus. Skārienekrāna viedtālruņiem un planšetdatoriem...
Vidējā peles poga nedarbojas sistēmā Windows 10
The peles vidējā poga palīdz jums ritināt garas tīmekļa lapas un ekrānus ar lielu datu daudzumu. Ja tas apstājas, jūs galu galā izmantosiet tastatūru,...