簡體   English   中英

檢索字典中最后一個鍵的值

[英]Retrieve value of last key in dictionary

我正在嘗試從返回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} 

重新考慮問題后,我意識到,由於日期采用的格式可以正確地與字符串進行比較,因此可以執行k,v = max(data.items())但是如果您(或其他正在查看此線程的人)使用的日期格式無法正常顯示以下原始答案。


您可以簡單地使用max內置函數來比較字典的鍵,以確保它們都被比較為日期和時間,您可以使用key參數將它們作為datetime對象進行比較:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM