Python: Elegancko scalaj słowniki z sumą () wartości [duplikat]
To pytanie ma już odpowiedź tutaj:
Czy istnieje jakiś pythonowy sposób łączenia dwóch nagrań (dodawanie wartości dla kluczy pojawiających się w obu)? 18 odpowiedzi Próbuję scalić dzienniki z kilku serwerów. Każdy dziennik jest listą krotek date
, count
).date
może pojawić się więcej niż raz i chcę, aby wynikowy słownik przechowywał sumę wszystkich zliczeń ze wszystkich serweró
Oto moja próba, z pewnymi danymi, na przykład:
from collections import defaultdict
a=[("13.5",100)]
b=[("14.5",100), ("15.5", 100)]
c=[("15.5",100), ("16.5", 100)]
input=[a,b,c]
output=defaultdict(int)
for d in input:
for item in d:
output[item[0]]+=item[1]
print dict(output)
Co daje
{'14.5': 100, '16.5': 100, '13.5': 100, '15.5': 200}
Zgodnie z oczekiwaniami
Zaraz pójdę na banany z powodu kolegi, który widział kod. Podkreśla, że musi istnieć bardziej Pythoński i elegancki sposób na zrobienie tego, bez tych zagnieżdżonych dla pętli. Jakieś pomysły