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]}