我在这里做错了什么。我要返回数字,但希望它们以从低到高的顺序返回。
def bus():
busurl = ('https://api.tfl.gov.uk/Line/9/Arrivals?stopPointId=IDHERE&app_id= % secret &app_key= % key')
bus = requests.get(busurl)
busarrival = bus.json()
count = 0
for i in busarrival:
if count <= 2:
status = (i['timeToStation'])
result = (status / 60)
print 'Next bus in {} mins'.format(result)
count += 1
最佳答案
您可以将sorted
与特殊的key
函数一起使用,以按到达时间排序:
for i in sorted(busarrival, key=lambda i: i['timeToStation']):
if count <= 2:
status = (i['timeToStation'])
...
或在循环前就地对列表进行排序:
busarrival.sort(key=lambda i: i['timeToStation'])
for i in busarrival:
...
当然,这要求每个条目必须具有
'timeToStation'
字段,并且该字段必须是数字,而不是字符串。如果是字符串,请先转换为数字,例如key=lambda i: int(i['timeToStation'])