2014-12-28 32 views
1

我與正在發送我的Python程序下面的數據傳回的API時:我怎樣才能從這本詞典中獲得'最後'的價值?

{"success":"true","message":"","result": 
[{"Last":"0.00000000","Bid":"42258.06451613","Ask":"100000000.0"}]} 

我是很新,在Python使用JSON工作,但想到可以這樣做:

data = json.load(urllib2.urlopen("apicall")) 
last = data["success"]["message"]["result"]["Last"] 

但顯然我需要使用整數代替。所以當我做

last = data[0][0][0][0] 

我被告知這是一個無效的密鑰。所以我的問題是:在這個例子中,獲得'Last'鍵值的正確方法是什麼?

+0

'data [「result」] [0] [「Last」]'。縮進JSON以讀取它將有所幫助;所以一次只能訪問一個密鑰以找出問題所在。 – Ryan

回答

3

正確的方法是解決外部字典,然後索引列表,然後拿到'Last'鍵:

last = data['result'][0]['Last'] 

演示:

>>> from pprint import pprint 
>>> data = {"success":"true","message":"","result": 
... [{"Last":"0.00000000","Bid":"42258.06451613","Ask":"100000000.0"}]} 
>>> pprint(data) 
{'message': '', 
'result': [{'Ask': '100000000.0', 
      'Bid': '42258.06451613', 
      'Last': '0.00000000'}], 
'success': 'true'} 
>>> data['result'] 
[{'Ask': '100000000.0', 'Bid': '42258.06451613', 'Last': '0.00000000'}] 
>>> data['result'][0] 
{'Ask': '100000000.0', 'Bid': '42258.06451613', 'Last': '0.00000000'} 
>>> data['result'][0]['Last'] 
'0.00000000' 

你的第一次嘗試試圖解決所有的按鍵在頂級字典中,由於data['success']是一個字符串,所以會失敗,並且字符串不能被['message']索引。

您的第二次嘗試失敗,因爲頂級對象是字典,而不是序列,並且其中沒有0鍵。