python - 在字典中查找最新的日期值
问题描述
我有这个代码请求股票 MSFT(微软)的信息,请求正确,我得到了我需要的所有数据,但是我想获得最新的股票价格(在 python 中它最新排序到最古老的,但是我不想把数据从顶部拿走,因为有些语言不会为我整理出来)在下面给出的结果中,有多个日期,例如:
{u'2019-10-08':
现在我想在 json 数据中找到最新的日期并将其打印出来。
我正在使用 Alpha 优势来获取这些数据,给定的数据没有任何问题。
import requests,json
func = 'function=TIME_SERIES_DAILY'
sym = 'symbol=MSFT'
inter = 'interval=10min'
apikey = 'apikey=**********'
url = 'https://www.alphavantage.co/query?'+func+'&'+sym+'&'+inter+'&'+apikey
resp = requests.get(url)
data = json.loads(resp.content)
d = data['Time Series (Daily)']
# print (d['2020-01-03']) #<- date
# print (max(d.values())) # does not give the expected data (i think because the date is in a string)
print (d)
缩短结果:
{u'Meta Data': {u'1. Information': u'Daily Prices (open, high, low, close) and Volumes', u'4.
Output Size': u'Compact', u'5. Time Zone': u'US/Eastern', u'2. Symbol': u'MSFT', u'3. Last
Refreshed': u'2020-01-03'}, u'Time Series (Daily)': {u'2019-10-08': {u'5. volume': u'26783336',
u'4. close': u'135.6700', u'2. high': u'137.7600', u'1. open': u'137.0800', u'3. low': u'135.6200'}}
我浏览了许多答案,其中一些没有答案或很少有不同语言的答案,我花了一些时间试图找到解决方案。
解决方案
如果我正确理解了这个问题,您可以使用datetime.strptime()
. 请注意,在您的情况下,正如@Iguananaut 指出的那样,日期格式按字典顺序排列,因此您可以使用maxdate = max(d)
.
from datetime import datetime
maxdate = max((x for x in d.keys()), key=lambda x: datetime.strptime(x, "%Y-%m-%d"))
print(maxdate)
print(d[maxdate])
这给了我输出:
2020-01-03
{'1. open': '158.3200',
'2. high': '159.9450',
'3. low': '158.0600',
'4. close': '158.6200',
'5. volume': '21121681'}
推荐阅读
- html - 如何从 r 中的 data.frame 列创建 html 文本条目列表(没有循环)?
- ruby-on-rails - Rails 5 在页面的其他地方使用表单 text_field
- r - 将向量列表中每个类似命名的元素提交给 R 中的函数
- linux - 在 subshell linux 中运行的脚本
- laravel - 我无法将 Laravel 升级到版本 7,因为 composer 抛出错误
- sql - 在 sql*plus 中创建数据库(sql 命令行)
- memory - 将多个输出分配给主程序中的同一变量时的 Fortran 子例程 NaN 问题
- python - 如何使用python提取上传到jupyter文件的文件名?
- c - 如何在阻止读取时检测 USB 断开连接?
- salesforce - 如何连接多个字段中存在的值并将其显示为目标字段中的单个值