Эффективные способы обновления словаря в Python, когда ключи не существуют

В Python словари представляют собой универсальные структуры данных, которые позволяют хранить пары ключ-значение. Обновление словаря может включать добавление новых пар ключ-значение или изменение существующих. При обновлении словаря вы можете столкнуться с ситуациями, когда вам нужно обновить ключ только в том случае, если он еще не существует. В этой статье мы рассмотрим несколько методов достижения этой цели в Python, а также примеры кода.

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

my_dict = {'apple': 3, 'banana': 5}
my_dict.setdefault('apple', 10)
my_dict.setdefault('orange', 7)
print(my_dict)

Выход:

{'apple': 3, 'banana': 5, 'orange': 7}

Метод 2. Использование метода get()
Метод get()позволяет получить значение, связанное с ключом в словаре. Если ключ не существует, вы можете указать возвращаемое значение по умолчанию. Объединив get()с назначением, вы сможете обновить словарь только в том случае, если ключ не найден.

my_dict = {'apple': 3, 'banana': 5}
my_dict['apple'] = my_dict.get('apple', 10)
my_dict['orange'] = my_dict.get('orange', 7)
print(my_dict)

Выход:

{'apple': 3, 'banana': 5, 'orange': 7}

Метод 3: использование класса defaultdict
Класс defaultdictиз модуля collectionsявляется подклассом dictкласс, который предоставляет значение по умолчанию для несуществующих ключей. Вы можете указать значение по умолчанию, передав вызываемый объект конструктору defaultdict. Этот подход позволяет обновлять словарь без явной проверки существования ключа.

from collections import defaultdict
my_dict = defaultdict(int)
my_dict['apple'] = 3
my_dict['banana'] = 5
my_dict['apple'] += 10
my_dict['orange'] += 7
print(dict(my_dict))

Выход:

{'apple': 13, 'banana': 5, 'orange': 7}

Метод 4: использование метода update()
Метод update()объединяет два словаря путем добавления пар ключ-значение из второго словаря в первый. Используя этот метод, вы можете обновить словарь только в том случае, если ключ не существует, что позволяет избежать перезаписи существующих значений.

my_dict = {'apple': 3, 'banana': 5}
new_dict = {'apple': 10, 'orange': 7}
for key, value in new_dict.items():
    my_dict.setdefault(key, value)
print(my_dict)

Выход:

{'apple': 3, 'banana': 5, 'orange': 7}

Обновление словаря в Python становится более эффективным, когда вам нужно обновить только несуществующие ключи. В этой статье мы рассмотрели несколько методов, в том числе использование setdefault(), get(), defaultdictи update(). Используя эти методы, вы можете писать лаконичный и читаемый код, гарантируя при этом, что существующие ключи не будут перезаписаны.