很抱歉,如果这个问题太简单了,但是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}]}
答案 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)来自哪里?