combine common value based on some key in list of tuple

dictionary, python

Solution

You can use dict.setdefault() to easily create groupings in a dictionary:

>>> data = [ ('item1', ('1-jan' ,45)) , ('item2', ('21-jan',65)), ('item1', ('21-jan',48))]
>>> result = {}
>>> for k, v in data:
        result.setdefault(k, []).append(v)

>>> result
{'item2': [('21-jan', 65)], 'item1': [('1-jan', 45), ('21-jan', 48)]}

You can also use collections.defaultdict to achieve the same end.

Problem

e.g ``` data = [ (item1, ('1-jan' ,45)) , (item2, ('21-jan',65)), (item1, ('21-jan',48))] ``` I like something like: ``` result = [ (item1, [('1-jan' ,45),('21-jan',48)]), (item2, [('21-jan',65)])] ``` to be precise I need final outcome ``` result = { item1: ('1-jan':45,'21-jan':48)), item2: ('21-jan':65)] ```

Original source