获取python字典的一部分中具有最大值的键

时间:2017-11-16 10:00:41

标签: python dictionary

我有一个python字典,它的键是datetime.datetime个对象,例如:

a = {datetime(2018,1,1):1, datetime(2018,1,2):2, datetime(2018,1,3):3, ...}

我想在此词典的一部分中获取具有最大值的键(日期),例如日期2018-03-272018-04-17之间。

实现这一目标的mosy pythonic方式是什么?

2 个答案:

答案 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_datemax_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)
相关问题