You can do funny things with Counters!
from collections import Counter
def f(x):
x, y = x.split(':')
return Counter({x : int(y)})
sum(map(f, lst), Counter())
Counter({'coffee': 23, 'salt': 26, 'sugar': 57})
If you're concerned about performance, a loop might be a better fit.
r = Counter()
for x in lst:
r.update(f(x))
r
Counter({'coffee': 23, 'salt': 26, 'sugar': 57})
source
share