Defaultdict у Python

Словник у Python — це невпорядкована колекція значень даних, які використовуються для зберігання значень даних, як карта. На відміну від інших типів даних, які містять лише одне значення як елемент, Словник містить пару ключ-значення. У Словнику ключ має бути унікальним і незмінним. Це означає, що кортеж Python може бути ключем, а список Python — ні. Словник можна створити шляхом розміщення послідовності елементів у фігурних дужках {}, розділених «комою».

приклад:

Python3




# Python program to demonstrate> # dictionary> > > Dict> => {> 1> :> 'Geeks'> ,> 2> :> 'For'> ,> 3> :> 'Geeks'> }> print> (> 'Dictionary:'> )> print> (> Dict> )> print> (> Dict> [> 1> ])> > # Uncommenting this print(Dict[4])> # will raise a KeyError as the> # 4 is not present in the dictionary>

Вихід:

Dictionary: {1: 'Geeks', 2: 'For', 3: 'Geeks'} Geeks 
Traceback (most recent call last): File '/home/1ca83108cc81344dc7137900693ced08.py', line 11, in print(Dict[4]) KeyError: 4 

Іноді, коли виникає KeyError, це може стати проблемою. Щоб подолати це, Python представляє інший словник, подібний до контейнера, відомий як Defaultdict який присутній всередині модуля колекцій.
Примітка: Для отримання додаткової інформації див Словник Python .

DefaultDict

Defaultdict є подібним до контейнера словники присутні в модулі колекції . Defaultdict — це підклас класу словника, який повертає об’єкт, схожий на словник. Функціональність обох словників і defaultdict майже однакова, за винятком того факту, що defaultdict ніколи не викликає KeyError. Він надає значення за замовчуванням для ключа, який не існує.

Синтаксис: defaultdict(default_factory)
Параметри:

    default_factory: функція, що повертає значення за замовчуванням для визначеного словника. Якщо цей аргумент відсутній, словник викликає KeyError.

приклад:

Python3




# Python program to demonstrate> # defaultdict> > > from> collections> import> defaultdict> > > # Function to return a default> # values for keys that is not> # present> def> def_value():> > return> 'Not Present'> > # Defining the dict> d> => defaultdict(def_value)> d[> 'a'> ]> => 1> d[> 'b'> ]> => 2> > print> (d[> 'a'> ])> print> (d[> 'b'> ])> print> (d[> 'c'> ])>

Вихід:

1 2 Not Present 

Внутрішня робота defaultdict

Defaultdict додає одну записувану змінну екземпляра та один метод на додаток до стандартних операцій зі словником. Змінна екземпляра є параметром default_factory, а наданий метод __missing__.

    Default_factory: це функція, яка повертає значення за замовчуванням для визначеного словника. Якщо цей аргумент відсутній, словник викликає KeyError.
    приклад:

Python3




# Python program to demonstrate> # default_factory argument of> # defaultdict> > > from> collections> import> defaultdict> > > # Defining the dict and passing> # lambda as default_factory argument> d> => defaultdict(> lambda> :> 'Not Present'> )> d[> 'a'> ]> => 1> d[> 'b'> ]> => 2> > print> (d[> 'a'> ])> print> (d[> 'b'> ])> print> (d[> 'c'> ])>

Вихід:

1 2 Not Present 
    __missing__(): Ця функція використовується для надання значення за умовчанням для словника. Ця функція приймає default_factory як аргумент, і якщо цей аргумент має значення None, виникає KeyError, інакше вона надає значення за замовчуванням для даного ключа. Цей метод в основному викликається методом __getitem__() класу dict, коли запитуваний ключ не знайдено. __getitem__() піднімає або повертає значення, яке повертає __missing__(). метод.
    приклад:

Python3




# Python program to demonstrate> # defaultdict> > > from> collections> import> defaultdict> > > # Defining the dict> d> => defaultdict(> lambda> :> 'Not Present'> )> d[> 'a'> ]> => 1> d[> 'b'> ]> => 2> > # Provides the default value> # for the key> print> (d.__missing__(> 'a'> ))> print> (d.__missing__(> 'd'> ))>

Вихід:

Not Present Not Present 

Використання List як default_factory

Коли клас списку передається як аргумент default_factory, тоді створюється defaultdict зі значеннями, які є списком.
приклад:

Python3




# Python program to demonstrate> # defaultdict> > > from> collections> import> defaultdict> > > # Defining a dict> d> => defaultdict(> list> )> > for> i> in> range> (> 5> ):> > d[i].append(i)> > print> (> 'Dictionary with values as list:'> )> print> (d)>

Вихід:

Dictionary with values as list: defaultdict(, {0: [0], 1: [1], 2: [2], 3: [3], 4: [4]}) 

Використання int як default_factory

Коли клас int передається як аргумент default_factory, тоді створюється defaultdict із нульовим значенням за замовчуванням.
приклад:

Python3




# Python program to demonstrate> # defaultdict> > > from> collections> import> defaultdict> > > # Defining the dict> d> => defaultdict(> int> )> > L> => [> 1> ,> 2> ,> 3> ,> 4> ,> 2> ,> 4> ,> 1> ,> 2> ]> > # Iterate through the list> # for keeping the count> for> i> in> L:> > > # The default value is 0> > # so there is no need to> > # enter the key first> > d[i]> +> => 1> > print> (d)>

Вихід:

defaultdict(, {1: 2, 2: 3, 3: 1, 4: 2}) 


Кращі Статті

Категорія