2016-10-28 6 views
1

これは非常に初心者の質問です。私は現在、特定の辞書値を取得中 - Python

import googlemaps 
import json as js 
from datetime import datetime 

gmaps = googlemaps.Client(key=googleapikey) 
my_distance = gmaps.distance_matrix('350 5th Ave, New York, NY 10118', 
           '4 Pennsylvania Plaza, New York, NY 10001') 
print(my_distance) 

プリントアウトは私が最終的に結果0.9キロを抽出したい次

{'status': 'OK', 'rows': [{'elements': [{'distance': {'value': 876, 'text': '0.9 km'}, 'duration': {'value': 324, 'text': '5 mins'}, 'status': 'OK'}]}], 'destination_addresses': ['4 Pennsylvania Plaza, New York, NY 10001, USA'], 'origin_addresses': ['350 5th Ave, New York, NY 10118, USA']}

で、次のコードを持っています。それ、どうやったら出来るの?

私は、エラー任意のヘルプは非常に感謝をいただければ幸いです

TypeError: list indices must be integers or slices, not str

を取得し、私は

print(my_distance['rows']) 

を使用してみましたが、それは私だけ

[{'elements': [{'status': 'OK', 'distance': {'value': 876, 'text': '0.9 km'}, 'duration': {'value': 324, 'text': '5 mins'}}]}]

print(my_distance['rows']['elements']['distance']) 

を与えます!

+1

_rows_と_elements_はリストなので、興味のあるレコードのインデックスを指定する必要があります: 'print(my_distance ['rows'] [0] ['elements'] [0] ['distance']) ' – agg3l

+1

'print(my_distance [' rows '] [0] [' elements '] [0] [' distance '] [' text '])' –

+0

それは多くの感謝の感謝をすることがわかります! – drsalt

答えて

0

elementsおよびrowsは、辞書自体ではなく、辞書のリストです。このようにそれらにアクセスします。

print(my_distance['rows'][0]['elements'][0]['distance']) 
+0

'elements 'だけでなく、 – agg3l

+0

@ agg3lがあまりにも速くタイプされました.thx、更新を参照してください。 – Ray

+0

確かに、歓声;) – agg3l

0
>>> mydict = {'status': 'OK', 'rows': [{'elements': [{'distance': {'value': 876, 'text': '0.9 km'}, 'duration': {'value': 324, 'text': '5 mins'}, 'status': 'OK'}]}], 'destination_addresses': ['4 Pennsylvania Plaza, New York, NY 10001, USA'], 'origin_addresses': ['350 5th Ave, New York, NY 10118, USA']} 
>>> mydict['rows'][0]['elements'][0]['distance']['text'] 
    '0.9 km' 

辞書がある{キー:値}、Pythonでリストには、[ 'キー'] [0]インナー{key:value}を取得するためにdict2使用する必要がありますのでdict2 = {key:[{key:value}]}ため、[elementA, elmentB]です

関連する問題