Один из распространенных вопросов, которые возникают при работе со словарями в 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 для работы со словарями и множествами.
Добавить комментарий