Python Defaultdict

Python Defaultdict

Python oferuje wiele wbudowanych struktur danych, takich jak listy, krotki i słowniki, do efektywnego zapisywania danych i zarządzania danymi. Słowniki zapewniają łatwy sposób zapisywania danych jako pary wartości kluczowej. Klucz działa jako indeks i służy do pobierania danych. Klucze powinny być wyjątkowe i niezmienne w całym słowniku. Klucze to głównie ciągi i liczby całkowite, chociaż wartość klucza może być dowolnego typu, taka jak liczba całkowita, ciąg, liczba zmiennoprzecinkowa lub liczba złożona. Tymczasem słownik może zawierać kolekcję, taką jak lista, krotek lub inny rodzaj słownika. Słownik w Pythonie jest tworzony przy użyciu pary kręconych nawiasów, w których każda para kluczowej jest oddzielona przecinkiem.

Co jeśli spróbujesz uzyskać dostęp lub zmodyfikować konkretny klucz w słowniku, który nie istnieje? Cóż, w tym przypadku interpreter Python podniesie błąd „Keyerror” i zakończy wykonanie programu.

Spójrzmy na przykład błędu „Keyerror”.

#Ukształcenie słownika
my_dict = 1: „Hello”, 2: „Welcome”, 3: „Linuxhint”
#dostęp do klucza, który nie istnieje
my_dict [4]

Wyjście

Aby poradzić sobie z tym błędem, Python zapewnia typ Defaultdict, klasę słownika, którą można znaleźć w module kolekcji. Ten artykuł zawiera szczegółowo Python Defaultdict.

Wyjaśnienie i przykłady niewydolności

Defaultdict jest alternatywą dla słownika Pythona. Zwraca obiekty typu słownika. Defaultdict to podklasa. W przypadku brakującego klucza, zamiast podnoszenia błędu „Keyerror”, wartość domyślna jest przewidziana dla nieistniejącego klucza. Składnia Defaultdict jest następująca:

Defaultdict (Default_Factory)

Funkcja Defaultdict bierze parametr DEFAULT_Factory jako argument. Funkcja Default_Factory zwraca wartość domyślną dla zdefiniowanego Defaultdict. Jeśli spróbujemy uzyskać dostęp lub zmodyfikujemy, którego brakuje, wówczas funkcja default_factory zwraca wartość domyślną jako wynik. Jeśli brakuje funkcji DEFAULT_Factory, Defaultdic podniesie błąd „Keyerror”, jeśli brakuje kluczy.

Najpierw zaimplementujemy Defaultdic w naszym skrypcie Python, aby uzyskać dostęp do zarówno istniejących, jak i brakujących kluczy.

#Wprowadź Defaultdict z modułu kolekcji
z kolekcji import defaultdict
#określenie funkcji, aby zwrócić wartość domyślną
def my_func ():
wydrukuj („Klucz nie jest zdefiniowany”)
#Creating a DefualTdict
#przestrzeganie my_func () jako argumentu do niewykonania zobowiązania
my_dict = defaultdict (my_func)
#określenie klawiszy i wartości
my_dict [1] = "Hello"
my_dict [2] = „Witaj”
my_dict [3] = "Linuxhint"
#dostępność wartości za pomocą klawiszy
Drukuj (my_dict [1])
druk (my_dict [2])
druk (my_dict [3])
#wjście brakującego lub nie zdefiniowanego klucza
my_dict [4]

Wyjście

[4] jest brakującym kluczem. Zamiast podnieść błąd „Keyerror”, wywołuje funkcję DEFAULT_Factory, która zwraca wartość domyślną.


Funkcja Lambda, znana jako funkcja anonimowa, może być również używana jako parametr DEFAULT_Factory.

Następnie zaimplementujemy funkcję Lambda i przekazamy ją jako argument do Defaultdict.

#Wprowadź Defaultdict z modułu kolekcji
z kolekcji import defaultdict
#Creating a DefualTdict
#przestrzeganie funkcji Lamnda jako argumentu do niewykonania zobowiązania
my_dict = defaultdict (Lambda: „Klucz nie jest zdefiniowany”)
#określenie klawiszy i wartości
my_dict [1] = "Hello"
my_dict [2] = „Witaj”
my_dict [3] = "Linuxhint"
#dostępność wartości za pomocą klawiszy
Drukuj (my_dict [1])
druk (my_dict [2])
druk (my_dict [3])
#wjście brakującego lub nie zdefiniowanego klucza
Drukuj (my_dict [4])

Defaultdict wywołuje default_factory, aby podać wartość domyślną, ale funkcja __missing () __ zapewnia wartość domyślną. Funkcja __missing () __ jest wbudowaną funkcją w Pythonie, która przyjmuje parametr DEFAULT_Factory jako argument. Jeśli parametr default_factory nie jest zdefiniowany, funkcja __missing () __ wznosi błąd „keyerror”.

Tutaj użyjemy funkcji __missing () __ w naszym skrypcie Python.

#Wprowadź Defaultdict z modułu kolekcji
z kolekcji import defaultdict
#określenie funkcji, aby zwrócić wartość domyślną
def my_func ():
wydrukuj („Klucz nie jest zdefiniowany”)
#Creating a DefualTdict
#przestrzeganie my_func () jako argumentu do niewykonania zobowiązania
my_dict = defaultdict (my_func)
#określenie klawiszy i wartości
my_dict [1] = "Linuxhint"
#dostępność wartości za pomocą klawiszy
Drukuj (my_dict [1])
#wjście brakującego lub nie zdefiniowanego klucza
my_dict.__ Missing __ (2)

Wyjście

Klasy listy i int można również użyć jako parametry_factory default_factory z Defaultdict.

Lista jako parametr default_factory

Defaultdict jest tworzony z wartościami listy, gdy klasa listy jest przekazywana parametrem DEFAULT_Factory.

#Wprowadź Defaultdict z modułu kolekcji
z kolekcji import defaultdict
# Definiowanie Defaultdict
# Przekazywanie klasy listy jako default_factory
my_dict = defaultdict (lista)
bo w zakresie (7):
my_dict [i].Dodatek (i)
#Printing wartości
Drukuj (my_dict)

Wyjście

Dane wyjściowe pokazuje wartości na liście. Jak widać, utworzono Defaultdict, który zawiera klucz i wartości.

Liczby całkowite jako parametr default_factory

Jeśli przekazamy klasę INT jako parametr DEFAULT_Factory, możemy utworzyć Defaultdict, który zawiera tylko liczby całkowite. Utworzymy listę liczb całkowitych, a następnie zapiszemy ją na Defaultdict.

#Wprowadź Defaultdict z modułu kolekcji
z kolekcji import defaultdict
# Definiowanie Defaultdict
# przekazywanie klasy int jako default_factory
my_dict = defaultdict (int)
#Tworzenie listy liczb całkowitych
my_list = [1,2,3]
bo w my_list:
my_dict [i]+= 1
#Printing wartości
Drukuj (my_dict)

Wyjście

W danym wyjściu wartości liczb całkowitych przed okrężnicą (:) są klawiszami, podczas gdy wartości liczb całkowity.

Wniosek

Dafaltdict to klasa podobna do słownika obecna w module kolekcji. Działa jak słownik Pythona, ale nie podnosi „Keyerror”, gdy nie znaleziono klucza. W tym artykule szczegółowo wyjaśniono defaultdict z różnymi przykładami.