Поиск по сайту:

Кто хочет достигнуть того, чего желает, пусть желает достижимого (Хуан Мануэль).

Python. Класс словаря defaultdict

FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
25 ноября 2020
Python 3 - Обзор
Python предлагает множество встроенных структур данных, таких как списки, кортежи и словари, для эффективного сохранения данных и управления ими. Словари позволяют легко сохранять данные в виде пар “ключ-значение”. Ключ действует как индекс и используется для извлечения данных. Ключи должны быть уникальными и неизменными во всем словаре. Ключи в основном представляют собой строки и целые числа, хотя значение ключа может быть любого типа, например целое число, строка, число с плавающей запятой или комплексное число. Между тем, словарь может содержать коллекцию, такую ​​как список, кортеж или какой-либо другой тип словаря. Словарь в Python создается с помощью пары фигурных скобок, в которых каждая пара “ключ-значение” разделяется запятой.

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

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

#Создание списка
my_dict= {1:"Hello",2:"Welcome",3:"AndreyEx"}
#доступ к несуществующему ключу
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 из модуля коллекции
from collections import defaultdict
# определение функции, возвращающей значение по умолчанию
def my_func():
print("Ключ не определен")
# создание defualtdict 
# передача my_func() в качестве аргумента для defaultdict
my_dict=defaultdict(my_func)
# определение ключей и значений
my_dict[1]="Привет"
my_dict[2]="Добро пожаловать"
my_dict[3]="AndreyEx" 
#доступ к значениям с помощью ключей
print(my_dict [1])
print(my_dict [2])
print(my_dict [3]) 
# доступ к отсутствующему или не определенному ключу
my_dict [4]

 

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

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

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

# импортировать defaultdict из модуля коллекции
from collections import defaultdict
# создать defualtdict
# передать функцию Lamnda в качестве аргумента defaultdict
my_dict=defaultdict(lambda:"Ключ не определен")
# определение ключей и значений
my_dict[1]="Привет"
my_dict[2]="Добро пожаловать"
my_dict[3]="AndreyEx" 
#доступ к значениям с помощью ключей
print(my_dict[1])
print(my_dict [2])
print(my_dict [3]) 
#доступ к отсутствующему или не определенному ключу
print(my_dict [4])

 

Defaultdict вызывает default_factory для предоставления значения по умолчанию, но функция __missing () __ предоставляет значение по умолчанию. Функция __missing () __ – это встроенная функция в Python, которая принимает в качестве аргумента параметр default_factory. Если параметр default_factory не определен, функция __missing () __ вызывает ошибку «KeyError».

Здесь мы будем использовать функцию __missing () __ в нашем скрипте Python.

# импортировать defaultdict из модуля коллекции
from collections import defaultdict
# определение функции для возврата значения по умолчанию
def my_func() :
print("Ключ не определен")
# создание defualtdict 
#передача my_func() в качестве аргумента для defaultdict
my_dict=defaultdict(my_func)
# определение ключей и значений
my_dict[1]="AndreyEx" 
# доступ к значениям с помощью ключей
print(my_dict [1]) 
# доступ к отсутствующему или не определенному ключу
my_dict.__missing__(2)

 

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

 

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

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

# импортировать defaultdict из модуля коллекции
from collections import defaultdict
# определение класса списка передачи defaultdict
# как default_factory
my_dict=defaultdict(list)
for i in range(7):
my_dict[i].append(i)
#печать значений
print(my_dict)

 

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

 

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

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

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

 

Читать  Python против Java в 2019 году

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

 

Вывод

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close