Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
09 Июн 2023
2 мин
1605

Как объединить два словаря в Python, складывая значения для общих ключей

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

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

Рассмотрим пример. Пусть есть два словаря:

dict1 = {'a': 1, 'b': 2, 'c': 3}
dict2 = {'b': 3, 'c': 4, 'd': 5}

Требуется объединить эти словари так, чтобы получился новый словарь, где для каждого ключа, который встречается в обоих исходных словарях, значение становится суммой значений этих ключей в исходных словарях. Если ключ встречается только в одном из словарей, то его значение в новом словаре остается неизменным.

В результате должен получиться словарь:

{'a': 1, 'b': 5, 'c': 7, 'd': 5}

В Python есть несколько способов решить эту задачу. Один из наиболее простых и «питоновских» способов заключается в использовании встроенной функции dict() и генератора словаря.

def merge_dicts(dict1, dict2):
    return {k: dict1.get(k, 0) + dict2.get(k, 0) for k in set(dict1) | set(dict2)}

В этом коде используется функция dict.get(), которая возвращает значение для данного ключа, если он существует в словаре, и 0, если такого ключа нет. Таким образом, для каждого ключа из объединения ключей исходных словарей (set(dict1) | set(dict2)) находится сумма его значений в этих словарях или 0, если ключ присутствует только в одном из словарей.

Этот подход является эффективным и «питоновским», так как он использует возможности языка Python для работы со словарями и множествами.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий