Python | Сводный список словарей с одинаковым ключом

| | | | | | | | | |

Давайте обсудим различные методы выполнения задачи.

Способ № 1: использование оператора reduce() +

# Код Python для демонстрации
# возвращает сумму значений словаря ‚Äã ‚Äã
# с одинаковыми ключами в списке словарей

импорт коллекции, functools, оператор


# Инициализация списка словарей

ini_dict = [{ ` a` : 5 , `b` : 10 <кодовый класс ="plain ">, ` c` : 90 } ,

{ `a` : 45 , `b` : 78 },

{ `a` : 90 , `c` : 10 }]



# вывести исходный словарь

print ( "начальный словарь" , str (ini_dict))


# суммирует значения ‚ Äã‚Äãс теми же ключами

result = dict (functools. уменьшить (operator.add,

map (collections.Counter, ini_dict)))


print ( "результирующий словарь:" , str (результат))

Вывод:

начальный словарь [{`b`: 10, `a`: 5, `c`: 90}, {`b`: 78, `a`: 45}, {`a`: 90, `c`: 10} ]
результирующий словарь: {`b`: 88, `a`: 140, `c`: 100}

Способ № 2: Использование счетчика

# код Python для демонстрации
# возвращает сумму значений словаря ‚Äã‚Äã
# с одинаковыми ключами в списке словаря


я port collections


# Инициализация списка словарей

ini_dict = [{ ` a` : 5 , `b` : 10 , `c` : 90 },

{ `a` : 45 , ` b` : 78 },

{< /код> <с ode class = "string"> `a` : 90 , `c` : 10 }]


# распечатать исходный словарь

print ( " начальный словарь " , str (ini_dict))


# суммировать значения с одинаковыми ключами

counter = collections.Counter ()

for d в ini_dict:

counter.update (d)


result = dict (счетчик)


print ( "результирующий словарь:" , str ( counter))

Выход:

начальный словарь [{`c`: 90, `a`: 5, ` b`: 10}, {`a`: 45, `b`: 78}, {`a`: 90, `c`: 10}]
результирующий словарь: Counter ({`a`: 140, ` c`: 100, `b`: 88})

Способ № 3: Наивный метод


# Код Python для демонстрации
# возвращает словарь суммы значений
# с теми же ключами в словаре l ist

from оператор импортировать элемент getter


# Инициализация списка словарей

ini_dict = [{ ` a` : 5 , `b` : 10 , `c` : 90 },

{ `a` : 45 , `b` : 78 },

{ `a` : 90 , ` c` : 10 }]


# напечатать исходный словарь

напечатать ( "начальный словарь" , str (ini_dict))


# суммирует значения ‚ Äã‚Äãс теми же ключами

result = {}

for d in ini_dict:

for k in d.keys():

result [k] = result.get (k, 0 ) + d [k]



print ( " результирующий словарь: " , str (результат))

Выход:

начальный словарь [{`b ` : 10, `с`: 90, `а`: 5}, {`b`: 78,`a`: 45}, {`c`: 10,`a`: 90}]
результирующий словарь: {`b`: 88, `c`: 100, `a` : 140