我在这里做错了什么。我要返回数字,但希望它们以从低到高的顺序返回。

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'])

07-26 07:14