簡體   English   中英

Python在列表中找到不晚於給定日期的最大日期

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM