Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python在不晚于给定日期的列表中查找最大日期_Python_Date - Fatal编程技术网

Python在不晚于给定日期的列表中查找最大日期

Python在不晚于给定日期的列表中查找最大日期,python,date,Python,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'] 正确的输出应该是日期中的第三

我想将日期字符串与日期字符串列表进行比较,找出列表中不晚于给定日期的最大日期

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()
的工作。可以通过生成器表达式选择组中的项目

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)
date='2015-04-16'
日期=[str(int(date[:4])-1)+'-05-01'
,str(int(date[:4])-1)+'-09-01'
,str(int(date[:4])-1)+'-11-01'
,日期[:4]+'-05-01'
,日期[:4]+'-09-01'
,日期[:4]+'-11-01']
打印最大值(如果x<日期,则x代表x个日期)
参考资料:

如果列表已排序(如示例中所示),则可以使用Python的模块非常高效地执行此操作:

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]