Словари Python — мощные инструменты для работы с данными. Они поддерживают разные методы, но функция setdefault() выделяется способностью упрощать код и эффективно работать со значениями по умолчанию.
Мы перевели для вас статью о функции setdefault(). В ней рассмотрим синтаксис, сценарии использования функции и покажем её пользу на практических примерах, а в подробном заключении сделаем основные выводы.
Разбираемся в функции setdefault()
Метод setdefault()
в словарях Python позволяет извлекать значение по указанному ключу, если он существует. Если ключа нет, функция вставляет ключ с указанным значением по умолчанию и возвращает это значение. Метод особенно полезен при работе со словарями, в которых обязательно нужен ключ и при этом, если ключа изначально нет, вам нужно инициализировать его значением по умолчанию.
Синтаксис
Так выглядит синтаксис метода setdefault()
:
dict.setdefault(key, default=None)
key
: выполняется поиск ключа в словаре.default
: если ключ не найден, задаётся и возвращается значение. Значение по умолчанию —None
.
Возвращаемое значение
Метод setdefault()
возвращает:
значение указанного ключа, существующего в словаре;
значение по умолчанию, если ключа в словаре нет.
Практические примеры
Чтобы понять, как функция setdefault()
работает в разных сценариях, давайте рассмотрим несколько практических примеров.
Пример 1. Базовый сценарий
Это пример базового использования метода setdefault()
.
# Creating a dictionary (создаём словарь)
fruits = {'apples': 5, 'oranges': 3}
# Using setdefault to get the value of an existing key (с помощью setdefault получаем значение существующего ключа)
apples_count = fruits.setdefault('apples', 10)
print('Apples:', apples_count)
# Using setdefault to add a new key with a default value (c помощью setdefault добавляем новый ключ со значением по умолчанию)
bananas_count = fruits.setdefault('bananas', 10)
print('Bananas:', bananas_count)
# Printing the updated dictionary (выводим обновлённый словарь)
print(fruits)
Результат:

Пример 2. Использование setdefault() в цикле
В этом примере с помощью метода setdefault()
подсчитаем частотность элементов в списке.
# List of fruits (список фруктов)
fruit_list = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
# Creating an empty dictionary to store the count (создаём пустой словарь для хранения подсчитанных значений)
fruit_count = {}
# Counting the frequency of each fruit (подсчитываем частотность каждого фрукта)
for fruit in fruit_list:
fruit_count.setdefault(fruit, 0)
fruit_count[fruit] += 1
# Printing the fruit count (выводим число подсчитанных фруктов)
print(fruit_count)
Результат:

Пример 3. Использование setdefault() с вложенными словарями
В этом примере мы с помощью метода setdefault()
поработаем с вложенными словарями.
# Creating an empty dictionary to store student grades (создаём пустой словарь для хранения оценок студентов)
grades = {}
# List of student data (список сведений о студентах)
students = [
('Alice', 'Math', 'A'),
('Bob', 'Math', 'B'),
('Alice', 'Science', 'A'),
('Bob', 'Science', 'C')
]
# Inserting student grades into the dictionary (вставляем оценки студентов в словарь)
for name, subject, grade in students:
grades.setdefault(name, {})
grades[name].setdefault(subject, grade)
# Printing the grades dictionary (выводим словарь с оценками студентов)
print(grades)
Результат:

Пример 4. Использование setdefault() для сложных структур данных
В этом примере воспользуемся методом setdefault()
, чтобы сформировать словарь списков.
# List of student scores (список баллов студентов)
student_scores = [
('Alice', 85),
('Bob', 92),
('Alice', 88),
('Bob', 95)
]
# Creating an empty dictionary to store scores (создаём пустой словарь для хранения баллов)
scores = {}
# Inserting scores into the dictionary (вставляем баллы в словарь)
for name, score in student_scores:
scores.setdefault(name, []).append(score)
# Printing the scores dictionary (выводим словарь с баллами)
print(scores)
Результат:

Что по итогу
Функция setdefault()
— универсальный эффективный инструмент работы со значениями по умолчанию в словарях Python. Она упрощает код, уменьшая необходимость в явных проверках и условных выражениях при работе с ключами в словарях. Научившись работать с методом setdefault()
, вы сможете писать более чистый код, характерный именно для Python, особенно в сценариях, где требуется ключ, который инициализируется значением по умолчанию.
Основные выводы:
Базовый сценарий. Метод
setdefault()
позволяет получать значение по имеющемуся ключу или задавать значение по умолчанию, если ключа нет.Подсчёт частоты.
setdefault()
можно использовать для эффективного подсчёта частоты элементов в списке.Вложенные словари. Метод
setdefault()
особенно полезен при работе с вложенными словарями, так как позволяет с лёгкостью обрабатывать сложные структуры данных.Создание сложных структур данных. Метод
setdefault()
можно использовать для формирования словарей списков или других сложных структур данных без явных проверок на наличие ключей.
Включив метод setdefault()
в свой инструментарий Python, можно повысить удобочитаемость, эффективность и надёжность кода. Эта встроенная функция, безусловно, поможет и начинающему, и опытному Python-разработчику качественнее работать со словарями и эффективно управлять значениями по умолчанию.
Чтобы расти, нужно выйти из привычной зоны и сделать шаг к переменам. Можно изучить новое, начав с бесплатных занятий:
Вводный курс магистратуры НИУ ВШЭ «Инженерия данных»;
1С-аналитика: как стать специалистом по автоматизации процессов.
Или открыть перспективы с профессиональным обучением и переподготовкой: