我想从API获取数据,其结构如下所示: 地区-通过-性别-年-价值 此api显示有多少人来自国家/地区通过考试,但同一年有2行,但性别不同(男性和女性)。 我想对每年的值求和,例如:
CountryA通过了男性2019 12
CountryA通过了女性比赛2019 30
因此结果应为42。 不幸的是,我的方法只返回女性的值。
我正在尝试这样的事情:
def task2(self,data,district=None):
passed = {stat.year: stat.amount for stat in data
if self.getPercentageAmountOfPassed(stat.status,stat.district,stat.year)}
def getPercentageAmountOfPassed(self,status,district,year):
return status == 'passed' and district == 'CountryA' and year <= 2019
我很确定我是从api获取数据的,因为我正在使用其他参数来求解其他示例
数据示例: [年] [区] [金额] [已通过] [性别]
[数据(2010.0,Polska,160988.0,przystąpiło,mężczyźni),
数据(2010.0,Polska,205635.0,przystąpiło,kobiety),
数据(2011.0,Polska,150984.0,przystąpiło,mężczyźni)]
答案 0 :(得分:1)
之所以发生这种情况,是因为您在同一年覆盖了以前的条目。您需要对它们求和:
from collections import defaultdict
def sum_per_year(data):
passed = defaultdict(int)
for stat in data:
if getPercentageAmountOfPassed(stat.status, stat.district, stat.year):
passed[int(stat.year)] += stat.amount
return passed