【问题标题】:How to get the latest "month year" string from a list of such strings?如何从此类字符串列表中获取最新的“月份年份”字符串?
【发布时间】:2021-02-10 13:03:19
【问题描述】:

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

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

输出:

February 2021

【问题讨论】:

    标签: python string list date max


    【解决方案1】:

    您可以使用内置的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.我使用列表推导遍历dates列表,并使用datetime.datetime.strptime()方法以及前面定义的f格式将每个字符串转换为datetime.datetime对象。
    3. 最后,将字符串列表转换为datetime.datetimeobject,我们可以使用内置的max()方法找到最新的日期,然后将返回的datetime.datetime对象转换为带有datetime.datetime.strftime()的字符串,使用f 格式。

    【讨论】:

    【解决方案2】:

    您可以将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 作为名称 - 这是一个内置函数。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 这个答案非常广泛且不清楚。尝试更具体,并实际展示如何做你建议的那些事情
      【解决方案4】:
      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"))
      

      【讨论】:

        猜你喜欢
        • 2019-07-03
        • 2020-09-18
        • 1970-01-01
        • 2020-12-19
        • 1970-01-01
        • 1970-01-01
        • 2012-08-28
        • 2020-02-12
        • 2022-08-15
        相关资源
        最近更新 更多