在类似结构的词典中添加键

时间:2017-09-28 09:19:58

标签: python json dictionary

我有这种JSon结构 JSON A

{
 "data":[
        {
          "weekdays":"7",
          "A":"122.56",
          "month":"9",
          "B":"10.96"
        },
        {
          "weekdays":"8",
          "A":"100",
          "month":"9",
          "B":"8.87"
        }]}

JSON B

{
 "data":[
        {
          "weekdays":"7",
          "A":"986.5",
          "month":"9",
          "B":"47.8"
        },
        {
          "weekdays":"8",
          "A":"170.85",
          "month":"9",
          "B":"196.65"
        }]}

我想要一个结果JSON,它会添加JSON A和JSON B,结果JSON低于

结果JSON

 {
     "data":[
            {
              "weekdays":"7",
              "A":"1109.96",
              "month":"9",
              "B":"10.96"
            },
            {
              "weekdays":"8",
              "A":"270.85",
              "month":"9",
              "B":"8.87"
            }]}

如何在不将其转换为字典并为字典编写逻辑的情况下设法在Python中获取结果?

1 个答案:

答案 0 :(得分:0)

如果它只是您想要总结的A个键,请尝试循环:

for i, d in enumerate(data1['data']):
     d['A'] =  str(float(d['A']) + float(data2['data'][i]['A']))

print(json.dumps(data1, indent=4, sort_keys=True))
{
    "data": [
        {
            "A": "1109.06",
            "B": "10.96",
            "month": "9",
            "weekdays": "7"
        },
        {
            "A": "270.85",
            "B": "8.87",
            "month": "9",
            "weekdays": "8"
        }
    ]
}

如果您还要添加B键,请稍微修改您的循环:

for i, d in enumerate(data1['data']):
    for k in ['A', 'B']:
        d[k] =  str(float(d[k]) + float(data2['data'][i][k]))

具有灵活性,您可以根据需要添加更多按键进行求和。