2016-12-09 2 views
-1

у меня есть словарь, в котором ключи являются кортежами (пар):Как сделать словарь с целыми числами в качестве ключей из словаря с кортежами в качестве ключей

dictionary1 = {(0, 1): 0, (2, 7): 3, (4, 7): 0, (1, 3): 0} 

(значение означает, сколько раз появляется кортеж)

Я хочу преобразовать словарь так, чтобы каждый элемент в кортежей стал key в новый словарь, сохраняя тот же value, что и в оригинальном dict. Структура моего нового словаря должна быть такой:

dictionary2 = {0: 0, 1: 0, 2: 3, 3: 0, 4: 0, 7: 3} 

Что является самым простым и эффективным способом? Если значение кортежа отображается в более чем одном месте. Новый dict будет содержать сумму значений для всех кортежей, где он существует

ответ

1

Итак, вы в основном ищете счетчик. Повезло вам, питон имеет один в collections модуле:

from collections import Counter 

c = Counter() 
for k, v in d.items(): 
    for i in k: 
     c[i] += v 

В качестве альтернативы, с простой словарь:

di = {}  
for k,v in d.items(): 
    for i in k: 
     di[i] = di.get(i, 0) + v