[英]Python find the max date in a list which are no later than a given date
我想将日期字符串与日期字符串列表进行比较,并在列表中找出不晚于给定日期的最大日期。
date='2015-04-16'
dates=[str(int(date[:4])-1)+'-05-01'
,str(int(date[:4])-1)+'-09-01'
,str(int(date[:4])-1)+'-11-01'
,date[:4]+'-05-01'
,date[:4]+'-09-01'
,date[:4]+'-11-01']
正确的输出应该是日期中的第三个元素,即“ 2014-11-01”。
谁能帮我这个? 谢谢!
由于您使用了按字典顺序排列的日期格式,因此可以直接比较字符串。 找到一组项目的max()
是max()
的工作。 可以通过生成器表达式选择组中要包含的项。
date='2015-04-16'
dates=[str(int(date[:4])-1)+'-05-01'
,str(int(date[:4])-1)+'-09-01'
,str(int(date[:4])-1)+'-11-01'
,date[:4]+'-05-01'
,date[:4]+'-09-01'
,date[:4]+'-11-01']
print max(x for x in dates if x < date)
参考文献:
如果您的列表已排序(如您的示例所示),则可以使用Python的bisect
模块非常有效地做到这一点:
import bisect
date='2015-04-16'
dates=[str(int(date[:4])-1)+'-05-01'
,str(int(date[:4])-1)+'-09-01'
,str(int(date[:4])-1)+'-11-01'
,date[:4]+'-05-01'
,date[:4]+'-09-01'
,date[:4]+'-11-01']
i = bisect.bisect(dates, date)
# Subtract one from the insertion point to find the previous date.
print dates[i - 1]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.