【发布时间】:2025-12-18 19:45:01
【问题描述】:
我正在尝试从返回 JSON 对象的 API 中提取财务数据。 API 没有明确声明返回的字典是 OrderedDicts 但是输出总是排序的,因此我将假设它是。
我需要检索字典中最后一个键的值,因为我需要最新的财务数据。但是,我不能明确使用密钥的名称来提取它,因为它是日期格式,并且可能会因使用查询的公司而异。
我尝试将字典对象转换为列表并使用 -1 的索引选择最后一个键,但是转换过程似乎随机化了字典的顺序,不再检索最后一个日期。
那么我将如何检索字典中最后一个键的值?
以下是 JSON 对象的示例:
{'2007-06-01T00:00:00': 21.19,
'2008-06-01T00:00:00': 26.01,
'2009-06-01T00:00:00': 19.34,
'2010-06-01T00:00:00': 22.88,
'2011-06-01T00:00:00': 23.77,
'2012-06-01T00:00:00': 14.77,
'2013-06-01T00:00:00': 16.58,
'2014-06-01T00:00:00': 14.02,
'2015-06-01T00:00:00': 7.0,
'2016-06-01T00:00:00': 9.08}
【问题讨论】:
-
通常,如果 API 未指定它实际执行的操作,您不应依赖它继续执行此操作。
-
如果所有键都是可比较的,那么最高的将是最新的,因此您使用
max(data.keys())来获取最新的键,具体取决于您可能需要指定key=...的格式来放置将日期转换为可以正确比较的格式。 -
您可以将日期字符串转换为实际的
datetime对象,对它们进行排序,然后得到最大的。 -
您不能依赖 API 的行为,因为它可能在未来发生变化。只需将键转换为
datetime对象即可对字典进行排序。 -
即使API返回的JSON是有序的,一旦你通过JSON解析器运行它,它就不再是有序的了。您也许可以通过strptime 将键解析为时间,然后根据这些时间进行排序。
标签: python sorting dictionary key key-value