gpt4 book ai didi

python - 返回 JSON 数组中的最小值

转载 作者:行者123 更新时间:2023-11-28 18:11:45 24 4
gpt4 key购买 nike

大家晚上好!好几个小时以来,我一直在为这个问题绞尽脑汁,并且可以在正确的方向上做一点点指导。我正在玩一些 API 调用并尝试为自己做一个小项目。

JSON 数据存储在数组中,因此为了获取我想要的信息(它来自传输 API),我一直在做以下事情

x = apirequest
x = x.json


for i in range(0,4):
print(x['routes'][i]['duration'])
print(x['routes'][i]['departure_time'])
print(x['routes'][i]['arrival_time'])

这将返回以下内容

06:58:00
23:39
06:37
05:08:00
05:14
10:22
03:41:00
05:30
09:11
03:47:00
06:24
10:11

我想做的是只返回最短的旅程——如果它是单层 JSON 字符串我可以做到,但我不太熟悉多层数组。如果不使用 ['routes'] 和路线指示符(在本例中为 0 到 3 或 4),我无法返回 ['duration']。

我可以使用 if 语句很容易地遍历它们,但必须有一种方法可以直接通过我缺少的 JSON 来完成它。我还考虑过将结果添加到一个单独的数组,然后对其进行过滤 - 但是当我破解这部分内容时,我还想从数据中获取一些其他字段。

我在学习过程中发现,我倾向于以冗长的方式做事,经常发现我在 codewars 上的 10-15 行解决方案实际上旨在以 2-3 行完成。

示例 JSON 数据

{
"request_time": "2018-05-29T19:03:04+01:00",
"source": "Traveline southeast journey planning API",
"acknowledgements": "Traveline southeast",
"routes": [{
"duration": "06:58:00",
"route_parts": [{
"mode": "foot",
"from_point_name": "Corunna Court, Wrexham",
"to_point_name": "Wrexham General Rail Station",
"destination": "",
"line_name": "",
"duration": "00:36:00",
"departure_time": "23:39",
"arrival_time": "00:15"
}]
}]
}

希望您能帮助我指引正确的方向!

最佳答案

这是一个使用 datetime.timedelta 的解决方案。来自@fferri 的数据。

from datetime import timedelta

x = {'routes': [{'duration':'06:58:00','departure_time':'23:39','arrival_time':'06:37'},
{'duration':'05:08:00','departure_time':'05:14','arrival_time':'10:22'},
{'duration':'03:41:00','departure_time':'05:30','arrival_time':'09:11'},
{'duration':'03:47:00','departure_time':'06:24','arrival_time':'10:11'}]}

def minimum_time(k):
h, m, s = map(int, x['routes'][k]['duration'].split(':'))
return timedelta(hours=h, minutes=m, seconds=s)

res = min(range(4), key=minimum_time) # 2

然后您可以通过 x['routes'][res] 访问适当的子词典。

关于python - 返回 JSON 数组中的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50590861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com