2015-09-16 59 views
0

我對編程知之甚少,我確定我的方法完全錯誤,但我試圖將JSON導入到python中,然後進行搜索。 JSON來自巴士跟蹤器網站。我主要了解如何導入數據,但我真的不知道如何使用它。這是我現在擁有的。在Python中匹配JSON

import requests 
r = requests.get('http://bustracker.tulsatransit.org/Services/JSONPRelay.svc/GetRouteVehicleEstimates') 
data = r.json() 

stop = requests.get('http://bustracker.tulsatransit.org/Services/JSONPRelay.svc/GetStops') 
stops = stop.json() 


def stopname(id): 
for i in stops: 
    if i['RouteStopID'] == id: 
     return i['Description'], id 
    else: 
     return "i dont know", i['RouteStopID'], id   


for i in data: 
for i in i['Vehicles']: 
    print i['Name'] 
    for i in i['Estimates']: 
     u = i['RouteStopID'] 
     print stopname(i['RouteStopID']) , (i['SecondsToStop']/60) 

我不明白如何去通過編號的對象。我用'爲我',但它似乎混亂和錯誤的方式?最終,我希望能夠列出特定路線的估算時間。有沒有辦法將對象分配給變量?所以我可以打電話說我[[名字]]否則沒有「爲我」混亂?我會把它變成一個函數嗎?

我的另一個問題是估計路由JSON不包括StopID鍵的描述。再次不真的知道如何做到這一點,但我想出了函數def stopname來搜索stopID並返回描述。但它似乎並沒有正確地貫穿不同的對象。

我周圍搜索,但找不到任何這樣的例子。

謝謝!

+4

不要在你所有的循環使用相同的變量!你知道字母表中還有其他字母嗎? ;-) –

+0

你不能使用'爲我在我',是的,字母表中有更多的字母。我建議一個基本的教程,解釋在嘗試執行此操作之前,對象迭代和for循環如何在Python中工作 –

回答

0

json返回的站點似乎是一個列表的字典。如果我明白你在問什麼,你希望能夠通過id找到一個停止位置而不是詢問是否「這是陣列中的正確對象?」。

變換解數來是一個字典,鍵對RouteStopID:

stop_dict = {x['RouteStopID']: x for x in stops} # Dictionary Comprehension 

然後你就可以在單個請求返回,而不是通過列表要價循環,這是我停止相應的停止信息,?

例如,獲取停止ID 2信息:

stop_dict.get(2, 'Stop Id not found')