Два cписка объединить в словарь с обработкой

Есть два списка:

unique_set2 = ['1111', '1111', '1231', '1211', '1111', '1231', '1001', '1001', '1001', '1001', '1111', '1231', '1231', '1001', '1001', '1111', '1505', '1231', '1231', '1001', '1001', '1231', '1211', '1212']

count = [111, 3, 13, 111, 9, 5, 17, 10, 13, 3, 16, 4, 16, 11, 18, 12, 14, 4, 3, 2, 14, 14, 10, 10]

Надо объединить их в словарь с обработкой. Если ключ уже есть, то значение прибавлять к имеющемуся:

d = {}

for i, j in zip(unique_set2, count):
  if i in d:
    прибавлять значение j к имеющемуся
  else:
    добавить новую пару в словарь


Ответы (2 шт):

Автор решения: Zhihar

в лоб так:

res = dict()

for first, second in zip(unique_set2, count):
    if first in res:
        res[first] += second
    else:
        res[first] = second

print(res)

чуть более короткое решение:

res = dict()

for first, second in zip(unique_set2, count):
    res[first] = res.get(first, 0) + second

P.S.

чтобы подсчитать среднее - нужно модифицировать код на такой:

res = dict()

for first, second in zip(unique_set2, count):
    res[first] = res.get(first, []) + [second]

for key in res:
    res[key] = sum(res[key]) / len(res[key])

print(res)

или такой:

res = dict()
counts = dict()

for first, second in zip(unique_set2, count):
    res[first] = res.get(first, 0) + second
    counts[first] = counts.get(first, 0) + 1

for key in res:
    res[key] /= counts[key]
→ Ссылка
Автор решения: SergFSM

вариант похожий на уже предложенные с циклом:

res = dict.fromkeys(unique_set2, 0)
for i in range(len(count)):
    res[unique_set2[i]] += count[i]

с использованием библиотеки pandas:

import pandas as pd

res = pd.DataFrame({'set':unique_set2,'count':count}).groupby('set')['count'].sum().to_dict()

если во втором варианте заменить sum на mean то получите средние значения

→ Ссылка