Использование метода dict.setdefault() для эффективной работы со словарем

Опубликован: 23.11.2023 92

В Python для эффективной работы со словарем предусмотрены два встроенных метода: .get() и .setdefault().

Оба эти метода позволяют безопасно получать значения из словаря по ключу без импорта дополнительных библиотек или необходимости обработки исключений KeyError, если ключ не найден.

Метод .get() можно использовать в том случае, если необходимо безопасно получать значения из словаря по ключу (даже при отсутствии запрашиваемых ключей), но при этом не нужно изменять сам словарь.

Более подробно метод .get() описан здесь.

Если же при работе со словарем запрашиваемые ключи могут отсутствовать и их требуется туда добавлять, то лучше всего использовать метод .setdefault.

Метод .setdefault(), аналогично методу .get(), возвращает значения ключа, если такой ключ уже существует в словаре. Если запрашиваемый ключ не найден, то метод добавляет в словарь пару ключ: значение по умолчанию и возвращает это значение.

Синтаксис: dictionary.setdefault( keyname [, default_value] )

  • keyname - ключ, который необходимо найти в словаре;
  • default_value - значение по умолчанию, которое будет установлено в словаре, если ключ не найден. В случае, если default_value не указывается, то будет установлено значение по умолчанию None.

Примеры использования метода .setdefault().

months = {1: 'январь', 2: 'февраль', 3: 'март'}

# стандартное получение значения если ключ в словаре найден
print(months[2])
февраль

# получение значения для отсутствующего ключа методом dict.get()
print(months.get(5))
None
print(months.get(5, "Такого значения в словаре нет"))
Такого значения в словаре нет

# получение значения для отсутствующего ключа методом dict.setdefault()
print(months.setdefault(5, "май"))
май

print(months)
{1: 'январь', 2: 'февраль', 3: 'март', 5: 'май'}

Похожие посты

Генератор словарей (Dict comprehension)

Метод dict.get() значение по умолчанию для отсутствующих ключей

Сортировка словарей по значениям

Методы преобразования списка в строку и обратно

Комментариев нет.