Простой, красивый и понятный фрагмент кода для объединения нескольких словарей Python с одинаковыми ключами.

Ситуации возникают на рабочем месте, например, при обобщении нескольких словарей. Например, предположим, что мы передаем результаты выборов в виде файла JSON.

{
   "city1":{
             "candidate1": 5,
             "candidate2": 7,
           }
.
.
.
.
}

задача состояла в том, чтобы подсчитать общее количество голосов, отданных за каждого кандидата. Первое решение, которое приходит на ум, — начать с пустого словаря, а затем пройтись по каждому подсловарю, добавляя его значения, как показано ниже:

for sub_dict in results.values():
   for key in sub_dict:
      sum_dict[key] += sub_dict[key]

Этот код работает, но в нем есть два вложенных цикла for, которые выглядят не очень питоническими. Что, если я скажу вам, что могу объединить весь этот код в одну красивую строчку? Вы мне не верите? Так что, подержи мое пиво…

dict(reduce(operator.add, map(collections.Counter, results.values())))

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

Я надеюсь, что, предоставив этот совет, я сделал вашу работу с Python проще и приятнее. В заключение, дорогой читатель, если вам понравилась эта статья, вы можете поддержать меня, купив мне чашечку кофе здесь ☕️

Подпишитесь на меня в Medium, Twitter и Facebook, где я рассказываю о Python, Data Science и AI- соответствующие СОВЕТЫ И ПОДСКАЗКИ.

Носитель: wadie_skaf

Твиттер: wadie_skaf

Facebook: Вади Скаф

Другие платформы: здесь