2012-05-13 11 views
0

私はWunderground APIから毎時予測を取得しようとしていますが、私のコードはこのエラーを返します。時間予測を取得するWunderground APIがエラーを返します。 - Python

Traceback (most recent call last): File "weathergraph.py", line 10, in forecast = parsed_json['hourly_forecast']['FCTTIME']['temp']['english'] TypeError: list indices must be integers, not str

これは私のコードです。 hourly_forecastの

f=urllib2.urlopen('http://api.wunderground.com/api/mykey/hourly/q/NY/New_York_City.json')

json_string = f.read()

parsed_json = json.loads(json_string)

forecast = parsed_json['hourly_forecast']['FCTTIME']['temp']['english']

f.close()

parsed_json = http://pastie.org/3905346

+0

'forecast ='行のある時点では、辞書にアクセスするのではなく、辞書にアクセスしています。その行を4行に分割し、どのインスタンスが例外を引き起こしているかを正確に判断する必要があります。 – brady

+0

さて、どうすればPythonでjsonリストにアクセスできますか? JSON自体の違いをどのように伝えますか? –

+0

いくつかのテストの後、これは動作します:forecast = parsed_json ['hourly_forecast']。しかし、これはそうではありません:forecast = parsed_json ['hourly_forecast'] ['FCTTIME']。だからFCCTTIMEとそれに続くすべてが奇妙なものですか?それをどうすれば処理できますか? –

答えて

3

1)値はdictsのリストではなく、辞書です。リストの中の約36のように見えます。

2)tempはFCTTIMEの要素ではありません。リストは時間順にあるので、最後の1が最新であるように見えます

forecast = parsed_json['hourly_forecast'][-1]['temp']['english'] 

:彼らは、これはエラーを発生させるべきではありません同じレベルに

です。 FCTTIMEの内容を確認すると、前回と違うかどうかがわかります。

+0

-1、それは何ですか?ありがとう。 –

+0

[-1]リストの最後の要素を返します。 – stark

+0

ありがとうございます。それをすべて考え出した。 –

関連する問題