You can use from to help here. This will create default values ββfor missing keys. First, you will need one that has a default value for your aggregation. Then you need , for which the first type is used by default, so you can create up to two levels. defaultdictcollectionsdictdefaultdict0defaultdictdefaultdict
>>> A = [{u'CI': {u'RP': 1}}, {u'CI': {u'RP': 1}}, {u'JI': {u'RP': 1}}]
>>> B = defaultdict(lambda: defaultdict(int))
>>> for d in A:
... for (key,d2) in d.iteritems():
... for (key2, value) in d2.iteritems():
... B[key][key2] += value
...
>>> B.items()
[(u'CI', defaultdict(<type 'int'>, {u'RP': 2})), (u'JI', defaultdict(<type 'int'>, {u'RP': 1}))]
dict, dict , defaultdict :
>>> [{key: dict(value)} for key,value in B.iteritems()]
[{u'CI': {u'RP': 2}}, {u'JI': {u'RP': 1}}]