2017-03-17 199 views
0

我有一个vehicle['estimatedCalls']['estimatedCall']列表包含以下项目:迭代通过Python列表

[ 
    { 
    u"originDisplay": [], 
    u"destinationDisplay": [], 
    u"stopPointRef": { 
     u"value": "STIF:StopPoint:Q:24684:" 
    }, 
    u"expectedDepartureTime": "2017-03-17T19:00:00.000Z", 
    u"stopPointName": [], 
    u"arrivalOperatorRefs": [] 
    }, 
    { 
    u"originDisplay": [], 
    u"destinationDisplay": [], 
    u"stopPointRef": { 
     u"value": "STIF:StopPoint:Q:24683:" 
    }, 
    u"expectedDepartureTime": "2017-03-17T19:00:00.000Z", 
    u"stopPointName": [], 
    u"arrivalOperatorRefs": [] 
    }, 
    { 
    u"originDisplay": [], 
    u"destinationDisplay": [], 
    u"stopPointRef": { 
     u"value": "STIF:StopPoint:Q:24680:" 
    }, 
    u"expectedDepartureTime": "2017-03-17T19:00:00.000Z", 
    u"stopPointName": [], 
    u"arrivalOperatorRefs": [] 
    }, 
    { 
    u"originDisplay": [], 
    u"destinationDisplay": [], 
    u"stopPointRef": { 
     u"value": "STIF:StopPoint:Q:24687:" 
    }, 
    u"expectedDepartureTime": "2017-03-17T19:00:00.000Z", 
    u"stopPointName": [], 
    u"arrivalOperatorRefs": [] 
    }, 
    { 
    u"originDisplay": [], 
    u"destinationDisplay": [], 
    u"stopPointRef": { 
     u"value": "STIF:StopPoint:Q:24686:" 
    }, 
    u"expectedDepartureTime": "2017-03-17T19:00:00.000Z", 
    u"stopPointName": [], 
    u"arrivalOperatorRefs": [] 
    }, 
    { 
    u"originDisplay": [], 
    u"destinationDisplay": [], 
    u"stopPointRef": { 
     u"value": "STIF:StopPoint:Q:24685:" 
    }, 
    u"expectedDepartureTime": "2017-03-17T19:00:00.000Z", 
    u"stopPointName": [], 
    u"arrivalOperatorRefs": [] 
    } 
] 

我想通过每个stopPointRef迭代,expectedDepartureTime夫妇(和不在座的,有时expectedArrivalTimeaimedDepartureTimeaimedArrivalTime存在时),以检索它们的值(为stopPointRef,价值不value但第二项(与STIF:StopPoint:Q:开始)

这里是我当前的代码:

for call in vehicle['estimatedCalls']['estimatedCall']: 
    stoptime = ent.trip_update.stop_time_update.add() 
    for j in len(vehicle['estimatedCalls']['estimatedCall']['stopPointRef']): 
     stoptime.stop_id = vehicle['estimatedCalls']['estimatedCall']['stopPointRef']['value'] 
     stoptime.arrival_time = call['expectedArrivalTime'] 
     stoptime.departure_time = call['expectedDepartureTime'] 

的 “for” 循环似乎正常工作(print vehicle['estimatedCalls']['estimatedCall']返回正确的列表)

但是当试图通过每个stopPointRefexpectedDepartureTime组进行迭代,用:

for j in len(vehicle['estimatedCalls']['estimatedCall']['stopPointRef']): 

我出现以下错误:TypeError: list indices must be integers, not str

您能否帮我解决这个问题并找到适当的代码来执行该操作?谢谢你的帮助!

+3

'len'返回一个整数,所以你写的东西归结为类似'在10' j,它并没有真正任何意义。有时候,一个人使用'范围内的j(len(...))',但这看起来并不是你想要的。 – fuglede

+0

this“vehicle ['estimatedCalls'] ['estimatedCall']”是一个不是字典的列表..您必须将它称为vehicle ['estimatedCalls'] ['estimatedCall'] [0] ['stopPointRef'] – repzero

回答

1

为了简单的目的,并从提供的,这里的信息是一个示例

value=[{u'originDisplay': [], u'destinationDisplay': [], 
    u'stopPointRef': {u'value': u'STIF:StopPoint:Q:24684:'}, 
    u'expectedDepartureTime': u'2017-03-17T19:00:00.000Z', 
    u'stopPointName': [], u'arrivalOperatorRefs': []}, 
{u'originDisplay': [], u'destinationDisplay': [], 
    u'stopPointRef': {u'value': u'STIF:StopPoint:Q:24683:'}, 
    u'expectedDepartureTime': u'2017-03-17T19:00:00.000Z', 
    u'stopPointName': [], u'arrivalOperatorRefs': []}, 
{u'originDisplay': [], u'destinationDisplay': [], 
    u'stopPointRef': {u'value': u'STIF:StopPoint:Q:24680:'}, 
    u'expectedDepartureTime': u'2017-03-17T19:00:00.000Z', 
    u'stopPointName': [], u'arrivalOperatorRefs': []}, 
{u'originDisplay': [], u'destinationDisplay': [], 
    u'stopPointRef': {u'value': u'STIF:StopPoint:Q:24687:'}, 
    u'expectedDepartureTime': u'2017-03-17T19:00:00.000Z', 
    u'stopPointName': [], u'arrivalOperatorRefs': []}, 
{u'originDisplay': [], u'destinationDisplay': [], 
    u'stopPointRef': {u'value': u'STIF:StopPoint:Q:24686:'}, 
    u'expectedDepartureTime': u'2017-03-17T19:00:00.000Z', 
    u'stopPointName': [], u'arrivalOperatorRefs': []}, 
{u'originDisplay': [], u'destinationDisplay': [], 
    u'stopPointRef': {u'value': u'STIF:StopPoint:Q:24685:'}, 
    u'expectedDepartureTime': u'2017-03-17T19:00:00.000Z', 
    u'stopPointName': [], u'arrivalOperatorRefs': []}] 
#I am attempting to build the vehicle dict like the one you have 
vehicle={} 
vehicle["estimatedCalls"]={"estimatedCall":value} 

for call in vehicle['estimatedCalls']['estimatedCall']: 
    print("\n\n") 
    #stoptime = ent.trip_update.stop_time_update.add() 
    expected_arrival_time= call['expectedArrivalTime'] if 'expectedArrivalTime' in call else None 
    expected_departure_time=call["expectedDepartureTime"] 
    aimed_departuretime=call['aimedDepartureTime'] if 'aimedDepartureTime' in call else None 
    aimed_arrivaltime=call['aimedArrivalTime'] if 'aimedArrivalTime' in call else None 
    print("stop id is",call['stopPointRef']['value']) 
    print("expected Arrival time is",expected_arrival_time) 
    print("expected departure time is",expected_departure_time) 
    print("aimed departure time is",aimed_departuretime) 
    print("aimed arrival time time is",aimed_arrivaltime)