Я хочу получить данные из 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, Польша, 205635.0, przystąpiło, kobiety),
Данные(2011.0, Польша,150984.0,przystąpiło,mężczyźni)]
@DeveshKumarSingh добавил
Эти данные не имеют чисел для сложения, например. 12 и 30
@DeveshKumarSingh снова отредактировал
Это происходит потому, что вы перезаписываете предыдущие записи, когда у вас один и тот же год. Вместо этого вам нужно суммировать их:
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
Можете ли вы показать примерное значение
data
?