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

2024-04-19 16:36:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据库格式如下:

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

我想在vibes表中列出每一个酒吧的名称,以及与之对应的每个评级。我的代码如下:

^{pr2}$

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


Tags: name数据库格式bartimestampratinglatitudelongitude
3条回答

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'])

如果您的venues变量是一个类似于JSON的对象,那么您可以使用standartjson库来处理它:

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

顺便说一句,重写内置的Python函数是一种糟糕的开发风格。在您的示例中,您重写了dict(dict是默认的Python类型对象)

我不确定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

^{pr2}$

相关问题 更多 >