Давайте использовать pandas.
#From @C14L setup:
li = [
[
{'Total Black': 3, 'Total Color': 2, 'Account ID': '2222', 'Account Name': 'Moe'},
{'Total Black': 5, 'Total Color': 4, 'Account ID': '3333', 'Account Name': 'Larry'},
{'Total Black': 9, 'Total Color': 6, 'Account ID': '4444', 'Account Name': 'Curly'}
],
[
{'Total Black': 8, 'Total Color': 4, 'Account ID': '2222', 'Account Name': 'Moe'},
{'Total Black': 2, 'Total Color': 7, 'Account ID': '3333', 'Account Name': 'Larry'},
{'Total Black': 11, 'Total Color': 9, 'Account ID': '4444', 'Account Name': 'Curly'}
]
]
pd.concat([pd.DataFrame(li[i]) for i in range(len(li))])\
.groupby(['Account ID','Account Name'])\
.sum()\
.reset_index()\
.to_dict(orient='records')
Вывод:
[{'Account ID': '2222',
'Account Name': 'Moe',
'Total Black': 11,
'Total Color': 6},
{'Account ID': '3333',
'Account Name': 'Larry',
'Total Black': 7,
'Total Color': 11},
{'Account ID': '4444',
'Account Name': 'Curly',
'Total Black': 20,
'Total Color': 15}]
Подробности:
Сначала мы используем понимание списка и конструктор pandas dataframe для построения фреймов данных для каждогоэлемент вашего оригинального списка списка со словарями.
Затем используйте pd.concat, чтобы объединить эти два, в данном случае кадры данных, в один объединенный кадр данных.
Используйте groupby с суммой для агрегирования значений Total Color и Total Black.
Наконец, сбросьте индекс и to_dict для вывода комбинированного кадра данных в виде словаря.