递归地解析多个json对象来练习计算 - Python

时间:2017-10-17 09:32:28

标签: python json database

我必须建立一个Json数据库(Firebase实时数据库)的分析系统。 这是它的样子:

{
  "247" : {
    "activity_duration" : 15,
    "battery_used" : 0,
    "date" : "2017-09-05",
    "day" : 247,
    "heat_waves" : 3,
    "outside_temperature" : 16.64,
    "shirt_temperature" : [ 24.883928571428573, 23.660714285714285 ]
  },
  "262" : {
    "activity_duration" : 240,
    "battery_used" : 2,
    "date" : "2017-09-20",
    "day" : 262,
    "heat_waves" : 5,
    "outside_temperature" : 21.19,
    "shirt_temperature" : [ 24.233616504854368, 22.954490291262136 ]
  },
  "268" : {
    "activity_duration" : 260,
    "battery_used" : 5,
    "date" : "2017-09-26",
    "day" : 268,
    "heat_waves" : 4,
    "outside_temperature" : 16.07,
    "shirt_temperature" : [ 18.68695652173913, 17.576630434782608 ]
  }
}

要做到这一点,我想在我的json文件中练习python中的计算,就像heat_waves的平均值一样。

问题是我不能在没有写入raw的情况下访问节点。 data["247"]["heat_waves"]但我需要data[0]["heat_waves"]之类的内容。当我尝试时:

import json;

data = [ ];
filename = "Database.json";
with open(filename,'r') as json_data:
     data = json.load(json_data);
     print(json.dumps(data[0]["heat_waves"], indent=4, sort_keys=True));

我有以下错误消息:

print(json.dumps(data[0]["heat_waves"], indent=4, sort_keys=True)); KeyError: 0

所以,我的最后一个问题是:

如何在不将其写入raw的情况下访问这些节点?

1 个答案:

答案 0 :(得分:0)

如果您不想按键来解决元素但是使用索引,则可以执行

>>> import json;
>>> 
>>> data = [ ];
>>> filename = "Database.json";
>>> with open(filename,'r') as json_data:
...      data = json.load(json_data)
>>> data.values()[0]['heat_waves']
5
>>>