2016-11-15 134 views
3

我的數據庫的格式是這樣的:如何從Python中使用字典獲取嵌套的JSON值?

{ 
    "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的一個包裝。我遇到了麻煩,因爲每個vibe都有一個生成的散列鍵,所以我不知道如何去更深入。有什麼想法嗎?

+0

你能顯示你想得到的輸出格式嗎? –

回答

1

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

這是我最終使用和它的工作,沒有意識到python會自動映射密鑰。謝謝! –

+0

@AmeerAkashe很高興能幫到你!如果可能,請將答案標記爲選中狀態,以便您的問題的未來觀衆知道已解決問題:) – lucasnadalutti

0

我不知道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 
     } 
    } 
} 
0

的東西,如果你venues變量是一個類JSON對象作爲例子,你可以使用非標準json庫與它的工作:

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

順便說一句,這是發展的不良作風 - 覆蓋內置Python funuctions。在你的例子中,你正在覆蓋字典(字典是一個默認的Python類型對象)

相關問題