2016-11-15 4 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ライブラリを使用しています。Pyrebaseはjavascript APIのラッパーです。各バイブには生成されたハッシュキーが含まれているので、私は問題を抱えています。何かご意見は?

+0

取得したい出力の形式を表示できますか? –

答えて

1

vibesおそらくとして提供されますが辞書。何が欲しいのは、各ハッシュキーの評価ですので、あなたのvenues変数は、例のようにJSONのようなオブジェクトである場合、あなたはそれで動作するようにスタンダールjsonライブラリを使用することができます

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であなたはそれが好きですか可能性があります

my_jsonはあなたのJSONから dictビルドです
>>> for vibe in my_json['vibes'].values(): 
...  print vibe['rating'] 
... 
1 # Rating of item 1 
5 # Rating of item 2 

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

ような何かを行うことができます。

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

Btwは、Pythonの組み込み関数を上書きするという悪い開発スタイルです。あなたの例ではdictを上書きしています(dictはデフォルトのPython型オブジェクトです)

関連する問題