从API获取数据并每年求和2个值

时间:2019-05-21 17:28:41

标签: python api

我想从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)]

1 个答案:

答案 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