我有一个需求,我需要对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.最近两个季度(从当月开始)
我该如何从这里开始-
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:
发布于 2018-06-26 10:12:54
像这样的东西可能会起作用:
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
当然,如果结果不像预期的那样,它可能需要改进,但它似乎可以根据当前数据提供正确的输出。
https://stackoverflow.com/questions/51032421
复制相似问题