繁体   English   中英

如何使用字典从python中提取嵌套的JSON值?

[英]How can I pull nested JSON values from python using dictionaries?

我的数据库格式如下:

{
  "latitude" : 41.884629,
  "longitude" : -87.648764,
  "name" : "Bar Siena",
  "placeID" : "ChIJf3h_t9osDogReehZO7Hgk50",
  "vibes" : {
    "LGpswrvLgfYppcBG4bpmNzXQVoU2" : {
      "rating" : 1,
      "timestamp" : 1.477961061358844E9
    },
    "OSzA2KhTBWS3pxVnCZ6eScAuNDG3" : {
      "rating" : 5,
      "timestamp" : 1.477955566836665E9
    }
  }
}

我想拉出每个条形图的名称,以及振动表中与之对应的每个评级。 我的代码看起来像这样:

firebase = pyrebase.initialize_app(config)

db = firebase.database()
for i in range(1,100):
    venues = db.child("venues").child(i).get()
    dict = (venues.val())
    print(dict['name'])

到目前为止,我只能得到这些名字,但我不确定如何更深入地获得收视率。 我的数据库是使用Firebase管理的,我正在使用一个名为Pyrebase的python库,它只是javascript api的包装器。 我遇到了麻烦,因为每个氛围都有一个生成的哈希键,所以我不确定如何更深入。 有什么想法吗?

vibes可能是一本字典。 你想要的是每个哈希键的评级,所以你可以做类似的事情

for hashkey, vibe_dict in dict['vibes'].items(): # dict is a Python keyword, so it's a bad choice for a variable!
    print(hashkey, vibe_dict['rating'])

我不确定firebase ,但在普通的python中,你可以这样做:

>>> for vibe in my_json['vibes'].values():
...     print vibe['rating']
...
1  # Rating of item 1
5  # Rating of item 2

其中my_json是你json的dict构建:

{
   "latitude":41.884629,
   "longitude":-87.648764,
   "name":"Bar Siena",
   "placeID":"ChIJf3h_t9osDogReehZO7Hgk50",
   "vibes":{
      "LGpswrvLgfYppcBG4bpmNzXQVoU2":{
         "rating":1,
         "timestamp":1.477961061358844E9
      },
      "OSzA2KhTBWS3pxVnCZ6eScAuNDG3":{
         "rating":5,
         "timestamp":1.477955566836665E9
      }
   }
}

如果你的venues变量是一个类似JSON的对象,你可以使用标准的json库来处理它:

import json
dict_data = json.loads(venues)
print dict_data['latitude']

顺便说一下,这是一种糟糕的开发方式 - 覆盖内置的Python功能。 在你的例子中,你覆盖了dict(dict是一个默认的Python类型对象)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM