Python: Суммируйте значения по ключу в Json данных для каждой страны - PullRequest
1 голос
/ 06 апреля 2020

У меня проблемы с суммированием значений по ключу для каждой страны. Данные json включают все страны, и у каждой страны есть все даты, а у каждой даты есть номера случаев. Данные выглядят следующим образом:

{
  "Afghanistan": [
    {
      "date": "2020-1-22",
      "confirmed": 0,
      "deaths": 0,
      "recovered": 0
    },
    {
      "date": "2020-1-23",
      "confirmed": 0,
      "deaths": 0,
      "recovered": 0
    },
   ...
   ...
  "Albania":
   ...
   ...
}

Я пытаюсь показать их примерно так, как показано ниже (страна и общее количество подтвержденных случаев для страны):

Афганистан ###

Албания ###

Ниже приведены коды, которые я пробовал, но результаты, похоже, не верны.

     contents = requests.get('https://pomber.github.io/covid19/timeseries.json').json()
        for country in contents:
            print(country)
            data = contents[country]

            idx = 0
            confirmed_total = 0
            for each_day in data:
                confirmed_total += data[idx]['confirmed']
                idx += 1
            print(confirmed_total)


Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 06 апреля 2020

Как-то так может помочь:

Вы можете перебирать словарь для каждого ключа (который является страной) и одновременно перебирать его значение (которое является списком диктов), чтобы найти ключ (который подтверждается) и суммировать.

In [303]: d = { 
     ...:   "Afghanistan": [ 
     ...:     { 
     ...:       "date": "2020-1-22", 
     ...:       "confirmed": 10, 
     ...:       "deaths": 0, 
     ...:       "recovered": 0 
     ...:     }, 
     ...:     { 
     ...:       "date": "2020-1-23", 
     ...:       "confirmed": 9, 
     ...:       "deaths": 0, 
     ...:       "recovered": 0 
     ...:     } 
     ...:    ] } 
     ...:      

In [305]: for key, value in d.items(): 
     ...:     sum = 0 
     ...:     for element in value: 
     ...:         sum = sum + element['confirmed'] 
     ...:     print('{}:{}'.format(key, sum)) 
     ...:      

Afghanistan:19
...