簡體   English   中英

遍歷python中的dict和list

[英]Traversing through dict and list in python

所以我從一個API中提取JSON中的數據,該API中包含dicts和多個列表。

result=r.json()
i=0
x=0

for row in r:
    print('Driver ID: ', result['logs'][x]['log']['driver']['username'])
    print('First Name: ', result['logs'][x]['log']['driver']['first_name'])
    print('Last Name: ', result['logs'][x]['log']['driver']['last_name'])
    for row1 in r:
        print('ID: ', result['logs'][x]['log']['events'][i]['event']['id'])
        print('Start Time: ', result['logs'][x]['log']['events'][i]['event']['start_time'])
        print('Type: ', result['logs'][x]['log']['events'][i]['event']['type'])
        print('Location: ', result['logs'][x]['log']['events'][i]['event']['location'])
        i=i+1
    x=x+1

我得到的錯誤是

print('ID: ', result['logs'][x]['log']['events'][i]['event']['id'])
IndexError: list index out of range

我知道變量i加起來在該索引處沒有對象,問題是'events'鍵在每個列表中都有可變數量的事件。 例如,第一個驅動程序的日志可能有7個事件,下一個驅動程序只能有3個事件。 有沒有辦法根據事件中存在的索引數運行循環?

我也嘗試使用'結果'而不是'r'的循環,但我對Python很新,我得到的結果不正確。

這是API Doc的鏈接。 我定位的端點是/ logs。 https://developer.keeptruckin.com/reference#get-logs

您應該遍歷子列表而不是根級別的result字典,並避免使用索引:

result = r.json()

for log in result['logs']:
    print('Driver ID: ', log['log']['driver']['username'])
    print('First Name: ', log['log']['driver']['first_name'])
    print('Last Name: ', log['log']['driver']['last_name'])
    for event in log['log']['events']:
        print('ID: ', event['event']['id'])
        print('Start Time: ', event['event']['start_time'])
        print('Type: ', event['event']['type'])
        print('Location: ', event['event']['location'])

暫無
暫無

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

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