【问题标题】:Numerically sorting a variables contents对变量内容进行数字排序
【发布时间】:2016-05-14 05:17:18
【问题描述】:

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

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

【问题讨论】:

  • 修复缩进。你在哪里返回任何值?
  • 对不起,我在最后打印,但打印的不是从最低到最高。我将如何实现这一目标?我尝试使用 status.sort,但无济于事。
  • 使用sorted(busarrival) 应该可以修复它。

标签: python api loops sorting int


【解决方案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'])

【讨论】:

  • 谢谢你的解释。我真的很感激!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2016-05-17
  • 2011-01-24
  • 2016-08-28
  • 2011-02-25
  • 1970-01-01
相关资源
最近更新 更多