Python

Python defaultdict

Python defaultdict

Python предлагает множество встроенных структур данных, таких как списки, кортежи и словари, для эффективного сохранения данных и управления ими. Словари позволяют легко сохранять данные в виде пар "ключ-значение". Ключ действует как индекс и используется для извлечения данных. Ключи должны быть уникальными и неизменными во всем словаре. Ключи в основном представляют собой строки и целые числа, хотя значение ключа может быть любого типа, например целое число, строка, число с плавающей запятой или комплексное число. Между тем, словарь может содержать коллекцию, такую ​​как список, кортеж или какой-либо другой тип словаря. Словарь в Python создается с помощью пары фигурных скобок, в которых каждая пара ключ-значение разделяется запятой.

Что делать, если вы попытаетесь получить доступ или изменить определенный ключ в несуществующем словаре? Что ж, в этом случае интерпретатор Python вызовет ошибку «KeyError» и прекратит выполнение программы.

Давайте посмотрим на пример ошибки KeyError.

# создание словаря
my_dict = 1: "Привет", 2: "Добро пожаловать", 3: "LinuxHint"
# доступ к несуществующему ключу
my_dict [4]

Выход

Для обработки этой ошибки Python предоставляет тип defaultdict, класс словаря, который можно найти в модуле коллекций. В этой статье подробно рассматривается Python defaultdict.

Объяснение и примеры defaultdict

Defaultdict - альтернатива словарю Python. Возвращает объекты типа словаря. Defaultdict - это подкласс dict. В случае отсутствия ключа вместо того, чтобы вызывать ошибку «KeyError», значение по умолчанию предоставляется для несуществующего ключа. Синтаксис defaultdict следующий:

defaultdict (default_factory)

Функция defaultdict принимает в качестве аргумента параметр default_factory. Функция default_factory возвращает значение по умолчанию для определенного defaultdict. Если мы попытаемся получить доступ или изменить отсутствующий ключ, функция default_factory вернет значение по умолчанию в качестве результата. Если функция default_factory отсутствует, defaultdic вызовет ошибку «KeyError», если есть какие-либо отсутствующие ключи.

Во-первых, мы реализуем defaultdic в нашем скрипте Python для доступа как к существующим, так и к отсутствующим ключам.

# импортировать defaultdict из модуля сбора
из коллекций импортировать defaultdict
# определение функции для возврата значения по умолчанию
def my_func ():
print («Ключ не определен»)
#creating a defualtdict
# передача my_func () в качестве аргумента defaultdict
my_dict = defaultdict (my_func)
# определение ключей и значений
my_dict [1] = "Привет"
my_dict [2] = "Добро пожаловать"
my_dict [3] = "LinuxHint"
# доступ к значениям с помощью ключей
печать (my_dict [1])
печать (my_dict [2])
печать (my_dict [3])
# доступ к отсутствующему или не определенному ключу
my_dict [4]

Выход

[4] - это недостающий ключ. Таким образом, вместо того, чтобы вызывать ошибку «KeyError», он вызывает функцию default_factory, которая возвращает значение по умолчанию.


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

Затем мы реализуем лямбда-функцию и передадим ее в качестве аргумента в defaultdict.

# импортировать defaultdict из модуля сбора
из коллекций импортировать defaultdict
#creating a defualtdict
# передача функции Lamnda в качестве аргумента defaultdict
my_dict = defaultdict (лямбда: «Ключ не определен»)
# определение ключей и значений
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.

# импортировать defaultdict из модуля сбора
из коллекций импортировать defaultdict
# определение функции для возврата значения по умолчанию
def my_func ():
print («Ключ не определен»)
#creating a defualtdict
# передача my_func () в качестве аргумента defaultdict
my_dict = defaultdict (my_func)
# определение ключей и значений
my_dict [1] = "LinuxHint"
# доступ к значениям с помощью ключей
печать (my_dict [1])
# доступ к отсутствующему или не определенному ключу
my_dict.__ отсутствует __ (2)

Выход

Классы list и int также могут использоваться как параметры default_factory с defaultdict.

Список как параметр default_factory

Defaultdict создается со значениями списка, когда классу списка передается параметр default_factory.

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

Выход

На выходе отображаются значения в списке. Как видите, был создан defaultdict, содержащий ключ и значения.

Целые числа как параметр default_factory

Если мы передадим класс int в качестве параметра default_factory, тогда мы сможем создать defaultdict, который будет содержать только целые числа. Мы создадим список целых чисел и сохраним его в defaultdict.

# импортировать defaultdict из модуля сбора
из коллекций импортировать defaultdict
# определение defaultdict
# передача класса int как default_factory
my_dict = defaultdict (число)
# создание списка целых чисел
my_list = [1,2,3]
для i в my_list:
my_dict [i] + = 1
# печать значений
печать (my_dict)

Выход

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

Заключение

Dafualtdict - это подобный словарю класс, присутствующий в модуле коллекций. Он работает как словарь Python, но не вызывает ошибку «KeyError», если ключ не найден. В этой статье подробно объясняется defaultdict с различными примерами.

Vulkan для пользователей Linux
С каждым новым поколением видеокарт мы видим, как разработчики игр расширяют границы графической точности и приближаются на шаг ближе к фотореализму. ...
OpenTTD против Simutrans
Создание собственного транспортного симулятора может быть увлекательным, расслабляющим и чрезвычайно увлекательным занятием. Вот почему вам нужно попр...
Учебник OpenTTD
OpenTTD - одна из самых популярных бизнес-симуляторов. В этой игре вам нужно создать замечательный транспортный бизнес. Тем не менее, вы начнете в нач...