0

对不起,如果这是一个太简单的问题,但是sumifpython 中是否有一个函数可以sum通过标识符和类别?所以在这种情况下,我想要一个函数sumif,它将标识符和年份作为参数,并对金额求和。例如sumif('105','2006')应该返回1200

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

2 回答 2

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]
于 2012-05-15T13:08:01.363 回答
1

如果参数是常量并且字典的大小始终相同,则类似于

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

有很多方法

一个更好的问题是:奇怪的数据结构(带有单例字典)从何而来?

于 2012-05-15T13:13:45.123 回答