检索字典中最后一个键的值
Retrieve value of last key in dictionary
我正在尝试从 API 和 returns 一个 JSON 对象中提取财务数据。 API 没有明确声明返回的字典是 OrderedDicts,但是输出总是排序的,因此我假设它是。
我需要检索字典中最后一个键的值,因为我需要最新的财务数据。但是,我无法明确使用密钥名称来提取它,因为它采用日期格式,并且可能因使用查询的公司而异。
我尝试将字典对象转换为列表,select 最后一个键使用索引 -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}
在重新考虑这个问题后我意识到因为日期的格式可以正确地与字符串进行比较,所以您可以 k,v = max(data.items())
但是如果您(或其他查看此线程的人)使用日期格式不起作用,我的原始答案如下。
您可以简单地使用 max
内置函数来比较字典的键,以确保它们都是作为日期和时间进行比较的,您可以使用 key
参数将它们作为日期时间进行比较对象:
import datetime
data = {'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}
def converter(timestamp):
return datetime.datetime.strptime(timestamp, "%Y-%m-%dT%H:%M:%S")
highest = max(data.keys(),key=converter)
print(highest) #2016-06-01T00:00:00
我正在尝试从 API 和 returns 一个 JSON 对象中提取财务数据。 API 没有明确声明返回的字典是 OrderedDicts,但是输出总是排序的,因此我假设它是。
我需要检索字典中最后一个键的值,因为我需要最新的财务数据。但是,我无法明确使用密钥名称来提取它,因为它采用日期格式,并且可能因使用查询的公司而异。
我尝试将字典对象转换为列表,select 最后一个键使用索引 -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}
在重新考虑这个问题后我意识到因为日期的格式可以正确地与字符串进行比较,所以您可以 k,v = max(data.items())
但是如果您(或其他查看此线程的人)使用日期格式不起作用,我的原始答案如下。
您可以简单地使用 max
内置函数来比较字典的键,以确保它们都是作为日期和时间进行比较的,您可以使用 key
参数将它们作为日期时间进行比较对象:
import datetime
data = {'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}
def converter(timestamp):
return datetime.datetime.strptime(timestamp, "%Y-%m-%dT%H:%M:%S")
highest = max(data.keys(),key=converter)
print(highest) #2016-06-01T00:00:00