将数据汇总到按类别分组的字典中

时间:2014-09-14 12:07:03

标签: python dictionary grouping

我有一个表格

World=[['spain','europe'],['germany','europe'],['china','asia'],['japan','asia']]

和字典

Gdp={
     'spain':{2010:100,2011:101,2012:102},
     'germany':{2010:110,2011:111,2012:112},
     'china':{2010:120,2011:145,2012:152},
     'japan':{2010:105,2011:107,2012:109}
    }

我想输出一个字典,按地区和年份总和GDP 世界名单按地区汇总:

AreaGdp={
       'Europe':{2010:210,2011:212,2012:214}
       'Asia':{2010:225,2011:252,2012:261}
       }

1 个答案:

答案 0 :(得分:1)

您可以使用Counter个对象代替常规dict个对象。 Counterdict的子类,它允许从其他Counter对象轻松更新值。

>>> from collections import Counter
>>> AreaGdp = {pair[1]: Counter() for pair in World}
>>> AreaGdp
{'asia': Counter(), 'europe': Counter()}

现在更新AreaGdp中每个国家/地区World的值:

>>> for pair in World:
        AreaGdp[pair[1]] += Counter(Gdp[pair[0]])

这会产生:

>>> AreaGdp
{'europe': Counter({2012: 214, 2011: 212, 2010: 210}), 
 'asia': Counter({2012: 261, 2011: 252, 2010: 225})}