Простой, красивый и понятный фрагмент кода для объединения нескольких словарей 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: Вади Скаф
Другие платформы: здесь