簡體   English   中英

python字典遍歷中的邏輯錯誤

[英]logical error in python dictionary traversal

我通過pymongo在mongoDB中查詢之一返回:

{ "_id" : { "origin" : "ABE", "destination" : "DTW", "carrier" : "EV" }, "Ddelay" : -5.333333333333333,
 "Adelay" : -12.666666666666666 }
{ "_id" : { "origin" : "ABE", "destination" : "ORD", "carrier" : "EV" }, "Ddelay" : -4, "Adelay" : 14 }

{ "_id" : { "origin" : "ABE", "destination" : "ATL", "carrier" : "EV" }, "Ddelay" : 6, "Adelay" : 14 }

我在python模塊中遍歷以下結果,但我沒有得到全部3個結果,而只有兩個。 我相信我不應該像現在這樣使用len(results)。 您能否幫助我正確遍歷結果,因為我需要在Web ui上的結果json文檔中顯示所有三個結果。 謝謝。

碼:

pipe = [{ '$match': { 'origin': {"$in" : [origin_ID]}}},
             {"$group" :{'_id': { 'origin':"$origin", 'destination': "$dest",'carrier':"$carrier"},
             "Ddelay" : {'$avg' :"$dep_delay"},"Adelay" : {'$avg' :"$arr_delay"}}}, {"$limit" : 4}]
    results = connect.aggregate(pipeline=pipe)
    #pdb.set_trace()
    DATETIME_FORMAT = '%Y-%m-%d'
    for x in range(len(results)):
        origin = (results['result'][x])['_id']['origin']
        destination = (results['result'][x])['_id']['destination']
        carrier = (results['result'][x])['_id']['carrier']
        Adelay = (results['result'][x])['Adelay'] 
        Ddelay = (results['result'][x])['Ddelay']        
        obj = {'Origin':origin,
                'Destination':destination,
                'Carrier': carrier,
                'Avg Arrival Delay': Adelay,
                'Avg Dep Delay': Ddelay}
        json_result.append(obj)
    return json.dumps(json_result,indent= 2, sort_keys=False,separators=(',',':'))

Pymongo以以下格式返回結果:

{u'ok': 1.0, u'result': [...]}

因此,您應該遍歷結果:

for x in results['result']:
    ...

在您的代碼中,您嘗試計算dict的長度,而不是結果容器的長度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM