Saturday, 15 March 2014

Python 2.7 - Sum value on duplicates in dictionary -



Python 2.7 - Sum value on duplicates in dictionary -

i have list of dictionaries like:

list1=[{'a':'apples', 'b':'snack','count':2},{'a':'apples','b':'lunch','count':3},{'a':'apples','b':'snack','count':3}]

i need grouping duplicates in list on 'a' , 'b' , sum 'count' such that:

list2=[{'a':'apples','b':'snack','count':5},{'a':'apples','b':'lunch','count':3}]

searched through repository here , haven't recognized solution. much pointers.

you can utilize defaultdict 2tuple accumulate counts, force list...

list1=[{'a':'apples', 'b':'snack','count':2},{'a':'apples','b':'lunch','count':3},{'a':'apples','b':'snack','count':3}] collections import defaultdict dd = defaultdict(int) d in list1: dd[d['a'], d['b']] += d['count'] list2 = [{'a': k[0], 'b': k[1], 'count': v} k, v in dd.iteritems()] [{'a': 'apples', 'count': 3, 'b': 'lunch'}, {'a': 'apples', 'count': 5, 'b': 'snack'}]

python dictionary python-2.7

No comments:

Post a Comment