Как суммировать значения с плавающей точкой из следующего ответа JSON? - PullRequest
0 голосов
/ 28 мая 2018

(отказ от ответственности: я новичок в python, и это мой первый вопрос по stackoverflow, пожалуйста, потерпите меня!)

Контекст:

Я пытаюсь автоматизировать некоторые ежедневные задачи и выбрал для этого изучение Python,

Одной из задач является подключение к API и получение почасовой выручки за дату «x»

моя текущая «программа» успешно подключается и извлекает данные для даты Input ()

import requests
import json
from datetime import datetime, timedelta

autodatemonth = datetime.strftime(datetime.now() + timedelta(1), '%Y-%m')

enterday = input('Enter day: \n') 
AutoStartDate = str(autodatemonth) + '-' + str(enterday)
MonthPlusOne = int(enterday) + 1
AutoEndDate = str(autodatemonth) + '-' + str(MonthPlusOne) 

    parameters = {'start_date': AutoStartDate, 'end_date': AutoEndDate, 'fields': ['date', 'revenue'], 'start_at_row': 1, 'api_key': ‘xxx’, 'id': xxx, 'row_limit':24}

    # Make a get request with the parameters.
    response = requests.get("https://example.com/api/Reports/HourlySummary", params=parameters)

lst = response.json()

import pprint
pprint.pprint(lst)

# getting closer
for info in lst['data']:
    print(info['revenue'])  

приведенный выше код выдает ответ вроде этого:

{'data': [{'date': '2018-05-15T02:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T03:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T04:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T05:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T06:00:00', 'revenue': 20.0},
          {'date': '2018-05-15T07:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T08:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T09:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T10:00:00', 'revenue': 38.0},
          {'date': '2018-05-15T11:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T12:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T13:00:00', 'revenue': 93.0},
          {'date': '2018-05-15T14:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T15:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T16:00:00', 'revenue': 75.0},
          {'date': '2018-05-15T17:00:00', 'revenue': 27.0},
          {'date': '2018-05-15T18:00:00', 'revenue': 91.0},
          {'date': '2018-05-15T19:00:00', 'revenue': 75.0},
          {'date': '2018-05-15T20:00:00', 'revenue': 75.0},
          {'date': '2018-05-15T21:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T22:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T23:00:00', 'revenue': 38.0}],
 'message': None,
 'row_count': 24,
 'success': True}
0.0
0.0
0.0
0.0
20.0
0.0
0.0
0.0
38.0
0.0
0.0
93.0
0.0
0.0
75.0
27.0
91.0
75.0
75.0
0.0
0.0
38.0

Я застрял, пытаясьчтобы выяснить, как добавить значения с плавающей запятой из приведенного выше ответа.

Изучил несколько вопросов и ответов, но все еще пытается собрать воедино для моего собственного случая.

Не могли бы вы указать мнеправильное направление?

Редактировать: я просто хочу общую сумму доходов

Ответы [ 2 ]

0 голосов
/ 28 мая 2018
print(sum(info['revenue'] for info in lst['data']))

с использованием https://docs.python.org/3/library/functions.html#sum

и выражением генератора https://www.python.org/dev/peps/pep-0289/

0 голосов
/ 28 мая 2018

Использование списка со значением sum().

Пример:

lst = {'data': [{'date': '2018-05-15T02:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T03:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T04:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T05:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T06:00:00', 'revenue': 20.0},
          {'date': '2018-05-15T07:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T08:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T09:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T10:00:00', 'revenue': 38.0},
          {'date': '2018-05-15T11:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T12:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T13:00:00', 'revenue': 93.0},
          {'date': '2018-05-15T14:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T15:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T16:00:00', 'revenue': 75.0},
          {'date': '2018-05-15T17:00:00', 'revenue': 27.0},
          {'date': '2018-05-15T18:00:00', 'revenue': 91.0},
          {'date': '2018-05-15T19:00:00', 'revenue': 75.0},
          {'date': '2018-05-15T20:00:00', 'revenue': 75.0},
          {'date': '2018-05-15T21:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T22:00:00', 'revenue': 0.0},
          {'date': '2018-05-15T23:00:00', 'revenue': 38.0}],
 'message': None,
 'row_count': 24,
 'success': True}

res = sum([i['revenue'] for i in lst["data"]])
print(res)

Выход:

532.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...