Python - Будущий и предыдущий квартал календаря - PullRequest
0 голосов
/ 26 июня 2018

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

  {
  "level1": {
    "finalresult": [
      {
        "Amount": "12",
        "Month": "04",
        "Year": "2018",
        "Quarter": "2"
      },
      {
        "Amount": "13",
        "Month": "08",
        "Year": "2018",
        "Quarter": "3"
      },
      {
        "Amount": "13",
        "Month": "07",
        "Year": "2017",
        "Quarter": "3"
      },
      {
        "Amount": "124",
        "Month": "12",
        "Year": "2018",
        "Quarter": "4"
      },
      {
        "Amount": "153",
        "Month": "07",
        "Year": "2018",
        "Quarter": "3"
      }

Как мне начать писать функцию, чтобы узнать сумму суммы для следующего -

1.Следующие 3 квартала (с текущего месяца)

2.Последние 2 квартала (с текущего месяца)

Как мне действовать дальше -

response=requests.get("json url")
jsondata=response['level1']['finalresult']

now = datetime.datetime.now()

current_year = now.year

total_sum_last2qrtrs=[]
total_sum_next3qrtrs=[]

for result in jsondata:

1 Ответ

0 голосов
/ 26 июня 2018

Примерно так может работать:

current_quarter = ((now.month-1)//3)+1

def total_sum_next3qrtrs():
    year_next_3_quarters = []
    next_3_quarters = [(i%4+1) for i in range(current_quarter, current_quarter+3)]

    amounts = []

    for q in next_3_quarters:
        if q < current_quarter:
            year_next_3_quarters.append({'Year':current_year+1, 'Quarter': q})
        else:
            year_next_3_quarters.append({'Year':current_year, 'Quarter': q})

    for nq in year_next_3_quarters:
        for q in jsondata:
            if nq['Year'] == int(q['Year']) and nq['Quarter'] == int(q['Quarter']):
                amounts.append(int(q['Amount']))
    return sum(amounts)

def total_sum_last2qrtrs():
    year_last_2_quarters = []
    last_2_quarters = [(i%4+1) for i in range(current_quarter-3, current_quarter-1)]

    amounts = []

    for q in last_2_quarters:
        if q < current_quarter:
            year_last_2_quarters.append({'Year':current_year, 'Quarter': q})
        else:
            year_last_2_quarters.append({'Year':current_year-1, 'Quarter': q})

    for nq in year_last_2_quarters:
        for q in jsondata:
            if nq['Year'] == int(q['Year']) and nq['Quarter'] == int(q['Quarter']):
                amounts.append(int(q['Amount']))
    return sum(amounts)

current_quarter = ((now.month-1)//3)+1

print total_sum_next3qrtrs()
print total_sum_last2qrtrs()

вывод:

290 # 153 + 124 + 13
0   # None that meet the criteria

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

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