Eräs usein toistuva ohjelmointiprobleema on laskea yhteen usean eri dictionary-objektin sisältämien avainarvoparien summat.
Lähtökohtana voivat olla vaikkapa tällaiset objektit:
values1 = {'small':10, 'medium':20, 'large':30}
values2 = {'medium':50}
values3 = {'large':100}
Miten näistä saadaan helpoiten yhdistettyä yksi objekti, joka sisältää nämä yhteenlasketut arvot?
{'small':10, 'medium':70, 'large':130}
Python 2.7 tarjoaa tähän kätevän Counter-luokan, jolla voidaan suorittaa kyseiset laskutoimitukset suoraan +-operaatioina:
from collections import Counter
print dict(Counter(values1) + Counter(values2) + Counter(values3))
{'large': 130, 'medium': 70, 'small': 10}
Huomaa, että Counter on dict-luokan aliluokka, joten sitä voi halutessaan käyttää sellaisenaan tai helposti muuttaa takaisin dict-luokaksi.
Jos dictionaryja on vaihteleva määrä, ne voi laskea yhteen myös reduce-funktiolla näin:
all_values = [values1, values2, values3]
print dict(reduce(lambda x,y:x+y, [Counter(values) for values in all_values]))
{'small': 10, 'large': 130, 'medium': 70}