2017-10-17 78 views
1

我必须建立一个Json数据库(Firebase实时数据库)的分析系统。 这里是什么样子:递归解析多个json对象来练习计算 - Python

{ 
    "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 ] 
    } 
} 

要做到这一点,我想练习像一般的heat_waves我的JSON文件在Python计算。

的问题是,我不能没有生在写他们访问节点。 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

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

如何访问这些节点没有生写呢?

回答

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 
>>>