繁体   English   中英

遍历python列表

[英]Iterate through a python list

我的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

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

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

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM