如何从此类字符串列表中获取最新的 "month year" 字符串?

How to get the latest "month year" string from a list of such strings?

如何从 python 中的列表值中获取最大月份年份字符串值?

list = ['March 2020', 'January 2020', 'February 2021', 'May 2020', 'April 2019']

输出:

February 2021

对于每个位置,使用space .split(" ")拆分字符串,然后使用datatime进行比较。您可以使用辅助变量来保存索引

您可以使用内置的datetime模块:

from datetime import datetime

dates = ['March 2020', 'January 2020', 'February 2021', 'May 2020', 'April 2019']
f = "%B %Y"
print(max([datetime.strptime(d, f) for d in dates]).strftime(f))

解释:

  1. 将变量命名为内置函数已经采用的名称被认为是一种不好的做法,因此我将您的 list 重命名为 dates
  2. 我定义了一个变量f来存储每个日期的格式,其中%B表示完整的月份名称,%Y表示完整的年份。 3.I 使用列表理解遍历 dates 列表,并使用 datetime.datetime.strptime() 方法以及 f 格式将每个字符串转换为 datetime.datetime 对象较早定义。
  3. 最后,将字符串列表转换为datetime.datetime对象,我们可以使用内置的max() method to find the latest date, and then convert the returned datetime.datetime object into the string with datetime.datetime.strftime(),使用f格式。

您可以将 key 参数传递给 max

import datetime
spam = ['March 2020', 'January 2020', 'February 2021', 'May 2020', 'April 2019']
print(max(spam, key=lambda dt: datetime.datetime.strptime(dt, '%B %Y'))

附带说明 - 不要使用 list 作为名称 - 它是一个内置函数。

from datetime import datetime

dates = ['March 2020', 'January 2020', 'February 2021', 'May 2020', 'April 2019']
datetime_list = [datetime.strptime(date, "%B %Y") for date in dates]
print(max(datetime_list).strftime("%B %Y"))