Python

Присъда по подразбиране на Python

Присъда по подразбиране на Python

Python предлага много вградени структури от данни, като списъци, кортежи и речници, за ефективно запазване и управление на данните. Речниците предоставят лесен начин за запазване на данни като двойки ключ-стойност. Ключът действа като индекс и се използва за извличане на данни. Ключовете трябва да бъдат уникални и неизменни в целия речник. Ключовете са предимно низове и цели числа, въпреки че стойността на ключ може да бъде от всякакъв тип, като цяло число, низ, число с плаваща запетая или комплексно число. Междувременно речникът може да съдържа колекция, като списък, кортеж или някакъв друг тип речник. Речник в Python се създава с помощта на двойка къдрави скоби, в които всяка двойка ключ-стойност е разделена със запетая.

Какво ще стане, ако се опитате да осъществите достъп или да промените конкретен ключ в речник, който не съществува? Е, в този случай интерпретаторът на Python ще повдигне грешката „KeyError“ и ще прекрати изпълнението на програмата.

Нека разгледаме пример за грешка „KeyError“.

# създаване на речник
my_dict = 1: "Здравейте", 2: "Добре дошли", 3: "LinuxHint"
# достъп до ключ, който не съществува
my_dict [4]

Изход

За да се справи с тази грешка, Python предоставя типа на присъдата по подразбиране, речник клас, който може да бъде намерен в модула колекции. Тази статия обхваща подробно решението за неизпълнение на Python.

Обяснение и примери за неизпълнение

Присъдата по подразбиране е алтернативата на речника на Python. Той връща обекти от тип речник. Решението по подразбиране е подклас на дикта. В случай на липсващ ключ, вместо да се извежда грешка „KeyError“, стойността по подразбиране се предоставя за несъществуващия ключ. Синтаксисът на defaultdict е както следва:

defaultdict (фабрична_фабрика)

Функцията по подразбиране приема параметъра default_factory като аргумент. Функцията default_factory връща стойността по подразбиране за дефинираната defaultdict. Ако се опитаме да осъществим достъп или да променим ключ, който липсва, функцията default_factory връща стойността по подразбиране като резултат. Ако функцията default_factory липсва, тогава defaultdic ще изведе грешка „KeyError“, ако липсват ключове.

Първо, ще приложим defaultdic в нашия скрипт на Python за достъп както до съществуващи, така и до липсващи ключове.

#import defaultdict от модула за събиране
от колекции импортиране на defaultdict
#defining функция за връщане на стойността по подразбиране
def my_func ():
print ("Ключът не е дефиниран")
#creating a defualtdict
# passing the my_func () като аргумент за присъда по подразбиране
my_dict = defaultdict (my_func)
#defining ключовете и стойностите
my_dict [1] = "Здравейте"
my_dict [2] = "Добре дошли"
my_dict [3] = "LinuxHint"
#accessing the values ​​using keys
печат (my_dict [1])
печат (my_dict [2])
печат (my_dict [3])
# достъп до липсващия или недефиниран ключ
my_dict [4]

Изход

[4] е липсващият ключ. Така че, вместо да повдига грешка „KeyError“, тя извиква функцията default_factory, която връща стойността по подразбиране.


Ламбда функция, известна като анонимна функция, също може да се използва като параметър default_factory.

След това ще приложим ламбда функция и ще я предадем като аргумент на присъдата по подразбиране.

#import defaultdict от модула за събиране
от колекции импортиране на defaultdict
#creating a defualtdict
# преминаване на функцията Lamnda като аргумент за присъда по подразбиране
my_dict = defaultdict (ламбда: "Ключът не е дефиниран")
#defining ключовете и стойностите
my_dict [1] = "Здравейте"
my_dict [2] = "Добре дошли"
my_dict [3] = "LinuxHint"
#accessing the values ​​using keys
печат (my_dict [1])
печат (my_dict [2])
печат (my_dict [3])
# достъп до липсващия или недефиниран ключ
печат (my_dict [4])

Defaultdict извиква default_factory, за да предостави стойността по подразбиране, но функцията __missing () __ предоставя стойността по подразбиране. Функцията __missing () __ е вградена функция в Python, която приема параметъра default_factory като аргумент. Ако параметърът default_factory не е дефиниран, функцията __missing () __ повдига грешката „KeyError“.

Тук ще използваме функцията __missing () __ в нашия скрипт на Python.

#import defaultdict от модула за събиране
от колекции импортиране на defaultdict
#defining функция за връщане на стойността по подразбиране
def my_func ():
print ("Ключът не е дефиниран")
#creating a defualtdict
# passing на my_func () като аргумент за присъда по подразбиране
my_dict = defaultdict (my_func)
#defining ключовете и стойностите
my_dict [1] = "LinuxHint"
#accessing the values ​​using keys
печат (my_dict [1])
# достъп до липсващия или недефиниран ключ
my_dict.__пропускане __ (2)

Изход

Класовете списък и int също могат да се използват като параметри по подразбиране с фактура по подразбиране.

Списък като параметър по подразбиране

Постановката по подразбиране се създава със стойностите на списъка, когато класът на списъка е предаден на параметър default_factory.

#import defaultdict от модула за събиране
от колекции импортиране на defaultdict
# дефиниране на присъда по подразбиране
# предаване на списъчен клас като фабрична_фабрика
my_dict = defaultdict (списък)
за i в обхват (7):
my_dict [i].добави (i)
# отпечатване на стойностите
печат (my_dict)

Изход

Резултатът показва стойностите в списъка. Както можете да видите, е създадена присъда по подразбиране, която съдържа ключа и стойностите.

Цели числа като параметър по подразбиране

Ако предадем клас int като параметър default_factory, тогава можем да създадем присъда по подразбиране, която съдържа само цели числа. Ще създадем списък с цели числа и след това ще го запазим в defaultdict.

#import defaultdict от модула за събиране
от колекции импортиране на defaultdict
# дефиниране на присъда по подразбиране
# предаване на int клас като фабрична_фабрика
my_dict = defaultdict (int)
#creating a list of integers
my_list = [1,2,3]
за аз в my_list:
my_dict [i] + = 1
# отпечатване на стойностите
печат (my_dict)

Изход

В дадения изход целочислените стойности преди двоеточието (:) са ключове, докато целочислените стойности след двоеточието са стойности.

Заключение

Dafualtdict е подобен на речник клас, присъстващ в модула колекции. Той работи като речник на Python, но не извежда „KeyError”, когато ключ не е намерен. Тази статия обяснява подробно решението по подразбиране с различни примери.

Добавете жестове на мишката към Windows 10, като използвате тези безплатни инструменти
През последните години компютрите и операционните системи значително се развиха. Имаше време, когато потребителите трябваше да използват команди за на...
Контролирайте и управлявайте движението на мишката между множество монитори в Windows 10
Двоен дисплей на мишката ви позволява да контролирате и конфигурирате движението на мишката между множество монитори, като забавя движенията му близо ...
WinMouse ви позволява да персонализирате и подобрите движението на показалеца на мишката на компютър с Windows
Ако искате да подобрите функциите по подразбиране на показалеца на мишката, използвайте безплатна програма WinMouse. Той добавя още функции, за да ви ...