2017-01-04 13 views
1

Google apiの応答から値を取得する必要があります。 私は次のようにJSONレスポンスを持っている:Python:Json辞書のリストから値を取得

for who in direct: 
    act_dist = (direct ["legs"][0]["distance"]["value"]) 
    act_time2 = (direct2 ["legs"][0]["duration"]["value"]) 

direct = 
[{ 
'summary': 'Jakarta Inner Ring Road/Jl. Pantura/Jl. Tol Pelabuhan', 
'legs': [{ 
      'duration': {'value': 2130, 'text': '36 mins'}, 
      'via_waypoint': [], 
      'start_address': 'North Jakarta, North Jakarta City, Special Capital Region of Jakarta, Indonesia', 
      'duration_in_traffic': {'value': 2475, 'text': '41 mins'}, 
      'end_address': 'West Jakarta, West Jakarta City, Special Capital Region of Jakarta, Indonesia', 
      'start_location': {'lat': -6.138709899999999, 'lng': 106.8640136}, 
      'distance': {'value': 17777, 'text': '17.8 km'}, 
      'traffic_speed_entry': [], 
      'end_location': {'lat': -6.168346199999999, 'lng': 106.7588346} 
     }] 
}] 

私はいくつかの方法を試してみたlegs

からdurationdistancevalueを取得する必要があり、これが私の最後のコードです

このエラーが発生する: *トレースバック(直近の最後のコール):

File "C:src/distance.py", line 34, in <module> 
    act_dist = (direct ["legs"][0]["distance"]["value"]) 
TypeError: list indices must be integers or slices, not str* 

誰でもこの問題を解決できますか? おかげ

+0

'direct'は' List'です。要素にアクセスするために文字列を使うことはできません。 –

+0

'direct [0] [" legs "] [0] [" distance "] [" value "]'は動作するはずです。最初に 'direct'にインデックスを指定してください。 –

答えて

1

あなたのコードは、実際にする必要があります:

for who in direct: 
    act_dist = (who ["legs"][0]["distance"]["value"]) 
    act_time2 = (who ["legs"][0]["duration"]["value"]) 
0
for d in direct: 
    for l in d['legs']: 
     print l['duration'] 
     print l['distance'] 

あなたはすべてのリストをトラバースする必要があります。

関連する問題