我有一个python字典,它的键是datetime.datetime
个对象,例如:
a = {datetime(2018,1,1):1, datetime(2018,1,2):2, datetime(2018,1,3):3, ...}
我想在此词典的一部分中获取具有最大值的键(日期),例如日期2018-03-27
和2018-04-17
之间。
实现这一目标的mosy pythonic方式是什么?
答案 0 :(得分:3)
首先在字典中选择具有所需值之间的键的那些项,然后找到具有最大值的项:
from datetime import datetime
min_date = datetime(2018, 3, 27)
max_date = datetime(2018, 4, 17)
date = max((d[k], k) for k in d if min_date <= k <= max_date)[1]
此代码创建一系列元组,其中包含min_date
和max_date
之间的值和日期时间(按该顺序为N.B.)。然后它从具有最大值的序列中选择项目。所需数据是结果元组中的第二个元素。
答案 1 :(得分:2)
您可以使用生成器表达式将键限制在该日期范围内,然后通过将密钥作为a.get
传递来获取具有最大值的键:
date = max((k for k in a if datetime(2018, 03, 27) <= k <= datetime(2018, 04, 17)),
key=a.get)