Python пропонує безліч вбудованих структур даних, таких як списки, кортежі та словники, для ефективного збереження та управління даними. Словники забезпечують простий спосіб збереження даних як пар ключ-значення. Ключ діє як індекс і використовується для отримання даних. Ключі повинні бути унікальними та незмінними у всьому словнику. Ключі - це, в основному, рядки та цілі числа, хоча значення ключа може бути будь-якого типу, наприклад, ціле число, рядок, число з плаваючою комою або складне число. Тим часом словник може містити колекцію, наприклад, список, кортеж або інший тип словника. Словник на Python створюється за допомогою пари фігурних дужок, в яких кожна пара ключ-значення відокремлюється комою.
Що робити, якщо ви спробуєте отримати доступ або змінити певний ключ у словнику, який не існує? Ну, у цьому випадку інтерпретатор Python викличе помилку “KeyError” і припинить виконання програми.
Давайте розглянемо приклад помилки “KeyError”.
#створення словникаmy_dict = 1: "Привіт", 2: "Ласкаво просимо", 3: "LinuxHint"
# доступ до ключа, який не існує
my_dict [4]
Вихідні дані
Щоб обробити цю помилку, Python надає тип вироку за замовчуванням, клас словника, який можна знайти в модулі колекцій. У цій статті докладно висвітлено вирок за замовчуванням Python.
Пояснення та приклади вирок за замовчуванням
Вирок за замовчуванням є альтернативою словнику Python. Він повертає об’єкти типу словника. Дефолт - це підклас дикту. У випадку відсутнього ключа замість того, щоб викликати помилку “KeyError”, для неіснуючого ключа надається значення за замовчуванням. Синтаксис defaultdict виглядає так:
defaultdict (default_factory)Функція defaultdict приймає в якості аргументу параметр default_factory. Функція default_factory повертає значення за замовчуванням для визначеного вироку за замовчуванням. Якщо ми намагаємося отримати доступ або змінити ключ, який відсутній, тоді функція default_factory повертає значення за замовчуванням як результат. Якщо функція default_factory відсутня, тоді defaultdic викличе помилку “KeyError”, якщо відсутні будь-які ключі.
По-перше, ми застосуємо defaultdic у нашому скрипті Python для доступу як до існуючих, так і до відсутніх ключів.
#import defaultdict з модуля зборуз колекцій імпортувати defaultdict
#defining функції для повернення значення за замовчуванням
def my_func ():
print ("Ключ не визначений")
#create a defualtdict
# передаючи my_func () як аргумент до рішення за замовчуванням
my_dict = defaultdict (my_func)
#defining ключі та значення
my_dict [1] = "Привіт"
my_dict [2] = "Ласкаво просимо"
my_dict [3] = "Підказка Linux"
# доступ до значень за допомогою ключів
друк (my_dict [1])
друк (my_dict [2])
друк (my_dict [3])
# доступ до відсутнього або невизначеного ключа
my_dict [4]
Вихідні дані
[4] - відсутня клавіша. Отже, замість того, щоб викликати помилку “KeyError”, вона викликає функцію default_factory, яка повертає значення за замовчуванням.
Лямбда-функція, відома як анонімна функція, також може використовуватися як параметр default_factory.
Далі ми реалізуємо лямбда-функцію та передамо її як аргумент за замовчуванням.
#import defaultdict з модуля зборуз колекцій імпортувати defaultdict
#create a defualtdict
# передача функції Ламнда як аргумент вирок за замовчуванням
my_dict = defaultdict (лямбда: "Ключ не визначений")
#defining ключі та значення
my_dict [1] = "Привіт"
my_dict [2] = "Ласкаво просимо"
my_dict [3] = "LinuxHint"
# доступ до значень за допомогою ключів
друк (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 ("Ключ не визначений")
#create a defualtdict
# передаючи my_func () як аргумент до рішення за замовчуванням
my_dict = defaultdict (my_func)
#defining ключі та значення
my_dict [1] = "LinuxHint"
# доступ до значень за допомогою ключів
друк (my_dict [1])
# доступ до відсутнього або невизначеного ключа
my_dict.__відсутні __ (2)
Вихідні дані
Класи list та int також можуть використовуватися як параметри default_factory із defaultdict.
Перерахувати як параметр за замовчуванням
Вирок за замовчуванням створюється зі значеннями списку, коли класу списку передається параметр default_factory.
#import defaultdict з модуля зборуз колекцій імпортувати defaultdict
# визначаючи вирок за замовчуванням
# передавання класу списку як заводу за замовчуванням
my_dict = defaultdict (список)
для i в діапазоні (7):
мій_вирок [i].додати (i)
#друк значень
друк (my_dict)
Вихідні дані
На виході відображаються значення у списку. Як бачите, було створено вирок за замовчуванням, який містить ключ і значення.
Цілі числа як параметр default_factory
Якщо ми передаємо клас int як параметр default_factory, тоді ми можемо створити вирок за замовчуванням, який містить лише цілі числа. Ми створимо список цілих чисел, а потім збережемо його за замовчуванням.
#import defaultdict з модуля зборуз колекцій імпортувати defaultdict
# визначаючи вирок за замовчуванням
# передавання класу int як default_factory
my_dict = defaultdict (int)
#створення списку цілих чисел
my_list = [1,2,3]
для я в my_list:
my_dict [i] + = 1
#друк значень
друк (my_dict)
Вихідні дані
У даному висновку цілі значення перед двокрапкою (:) є ключами, тоді як цілі значення після двокрапки - значення.
Висновок
Dafualtdict - це словниковий клас, присутній у модулі колекцій. Він працює як словник Python, але не викликає “KeyError”, коли ключ не знайдений. Ця стаття детально пояснює рішення про невиконання зобов'язань на різних прикладах.