遍历python列表

2024-09-27 21:27:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个vehicle['estimatedCalls']['estimatedCall']列表,其中包含以下项目:

[
  {
    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": []
  }
]

我想遍历每个stopPointRefexpectedDepartureTime对(这里不存在,有时是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

你能帮我解决这个问题并找到合适的代码来执行吗?谢谢你的帮助!你知道吗


Tags: forvaluecallvehiclestoptimestoppointstoppointrefstoppointname
1条回答
网友
1楼 · 发布于 2024-09-27 21:27:40

为了简单起见,根据提供的信息,这里有一个示例

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)

相关问题 更多 >

    热门问题