setdefault(key, default) словаря проверяет наличие ключа key.
  default и возвращает default.KeyError и упрощает код при работе с отсутствующими ключами.
Метод setdefault() у словаря в Python используется для получения значения ключа, но с дополнительной функциональностью: если ключ отсутствует в словаре, он будет добавлен с указанным значением по умолчанию.
Основные действия:
setdefault(key, default) проверяет, присутствует ли указанный key в словаре.key уже существует в словаре, метод возвращает соответствующее ему значение.  Это аналогично обычному обращению к словарю через dictionary[key].key отсутствует в словаре, он добавляется в словарь, и ему присваивается значение default.  После этого метод возвращает значение default.Синтаксис:
dictionary.setdefault(key, default)Параметры:
key: Ключ, наличие которого проверяется.default: Значение, которое будет присвоено ключу, если он отсутствует в словаре. Если default не указан, то используется None.Пример:
my_dict = {'a': 1, 'b': 2}
# Ключ 'a' уже существует, возвращает его значение. Словарь не меняется.
value_a = my_dict.setdefault('a', 10)
print(f"Значение 'a': {value_a}")  # Вывод: Значение 'a': 1
print(f"Словарь: {my_dict}")      # Вывод: Словарь: {'a': 1, 'b': 2}
# Ключ 'c' отсутствует, добавляет его со значением 3.
value_c = my_dict.setdefault('c', 3)
print(f"Значение 'c': {value_c}")  # Вывод: Значение 'c': 3
print(f"Словарь: {my_dict}")      # Вывод: Словарь: {'a': 1, 'b': 2, 'c': 3}
# Ключ 'd' отсутствует и не указано значение по умолчанию, поэтому добавляется со значением None.
value_d = my_dict.setdefault('d')
print(f"Значение 'd': {value_d}") # Вывод: Значение 'd': None
print(f"Словарь: {my_dict}")      # Вывод: Словарь: {'a': 1, 'b': 2, 'c': 3, 'd': None}
  Преимущества использования setdefault():
setdefault() выполнит ее только один раз, если ключ отсутствует.Типичное использование:
setdefault() часто используется для инициализации словарей, где ключи представляют собой категории, а значения - списки элементов, принадлежащих к этим категориям.  Это позволяет добавлять элементы в список только один раз, при первом обнаружении ключа.
data = [('a', 1), ('b', 2), ('a', 3), ('c', 4), ('b', 5)]
result = {}
for key, value in data:
  result.setdefault(key, []).append(value)
print(result)  # Вывод: {'a': [1, 3], 'b': [2, 5], 'c': [4]}