是否有一个SUMIF函数来汇总Python中字典中的标识符?

时间:2012-05-15 13:03:25

标签: python dictionary sum

很抱歉,如果这个问题太简单了,但是python中的sumif函数是sum的标识符和类别吗?所以在这种情况下,我希望有一个函数sumif,它将标识符和年份作为参数,并将金额相加。例如,sumif('105','2006')应返回1200

data = {'105':[{'2005': 500}, {'2005', 13000}, {'2006', 100}, {'2006', 200}, {'2006', 900}], '256': [{'2005', 5000}, {'2005', 800}]}

2 个答案:

答案 0 :(得分:5)

>>> from collections import Counter
>>> data = {'105':[{'2005': 500}, {'2005': 13000}, {'2006': 100}, {'2006': 200}, {'2006': 900}], '256': [{'2005': 5000}, {'2005': 800}]}

>>> sum(map(Counter, data['105']), Counter())['2006']
1200

因此sumif的定义是:

sumif = lambda x, y: sum(map(Counter, data[x]), Counter())[y]

答案 1 :(得分:1)

如果参数是常量且dicts总是大小相同,那就像

sum( d.values()[0] for d in data['105'] if d.keys()[0] == '2006')

有很多方法

一个更好的问题是:奇怪的数据结构(带有singleton-dicts)来自哪里?