python-3.x 按日期对JSON文件中的数据进行排序,并将每天的值相加

lxkprmvk  于 2022-12-30  发布在  Python
关注(0)|答案(1)|浏览(105)

我有以下问题:我从网上商店获得的JSON文件的结构如下:

{
   "orders":[
      {
         "total_price":"100.10",
         "updated_at":"2022-12-29T12:10:39+01:00"
      },
      {
         "total_price":"50.20",
         "updated_at":"2022-12-29T12:05:02+01:00"
      },
      {
         "total_price":"53.20",
         "updated_at":"2022-12-29T12:00:39+01:00"
      },
      {
         "total_price":"50.00",
         "updated_at":"2022-12-28T11:54:29+01:00"
      },
      {
         "total_price":"30.00",
         "updated_at":"2022-12-27T13:35:03+01:00"
      }
   ]
}

我想按日期过滤所有订单,并将数字相加。一天中可能会出现多个订单,这些订单应被添加到一个总数字中。由此应创建一个新的JSON,如下所示。
对于每一天一个字段,如果没有数据,那么total_* day_* sales为零。

{
   "day":[
      {
         "total_day_sales":"0.00",
         "day_in_themonth":"1"
      },
      {
         "total_day_sales":"0.00",
         "day_in_themonth":"2"
      },
      {
         "total_day_sales":"0.00",
         "day_in_themonth":"3"
      },
      {
         "total_day_sales":"30.00",
         "day_in_themonth":"27"
      },
      {
         "total_day_sales":"50.00",
         "day_in_themonth":"28"
      },
      {
         "total_day_sales":"203.50",
         "day_in_themonth":"29"
      }
   ]
}

我已经尝试过创建循环并按"sorted(json * data,key = lambda x:...."*
但是,合并同一天的值是一个问题,我的想法是创建一个range循环,其中循环在字符串2022 - 12-28T11:54:29 + 01:00中搜索"day number"值,但在此过程中丢失了total_price值。
我需要一些提示来提取这些数据,并基于示例创建一个新的JSON。
非常感谢
一些最初的想法:

alist = json.loads(jsondump)

newlist = []

for it in alist['orders']:
    newlist.append(it['updated_at'])
    
newlist.sort()

for n in newlist:
    print(n)
jk9hmnmh

jk9hmnmh1#

对于每个对象,可以提取日期,并计算Map中的总数,例如:

# initialize all day totals to 0
days_to_totals = {f"{day:02}": 0 for day in range(1, 32)}

for item in jsondump['orders']:
    day = item['updated_at'][8:10]
    days_to_totals[day] += float(item['total_price'])

print(days_to_totals)
# {'01': 0, '02': 0, '03': 0, ..., '27': 30.0, '28': 50.0, '29': 203.5, '30': 0, '31': 0}

相关问题