Python3-以不同形式对字符串格式的日期列表进行排序(带时间和不带时间)

Python3-以不同形式对字符串格式的日期列表进行排序(带时间和不带时间),python,string,sorting,date,python-3.x,Python,String,Sorting,Date,Python 3.x,我试图对字符串格式的日期列表进行排序,但每个日期的格式不同,如下所示: lst = ['11/04/2016, 23:55', '15/11/2014', '04/05/2016, 23:55', '24/11/2013, 12:30', '31/12/2015'] 我尝试了以下排序: lst.sort(key=lambda date: datetime.strptime(date, "%d/%m/%Y, %H:%M")) 但是由于我不知道日期会是什么(有具体的时间还是没有),我被卡住了。。

我试图对字符串格式的日期列表进行排序,但每个日期的格式不同,如下所示:

lst = ['11/04/2016, 23:55', '15/11/2014', '04/05/2016, 23:55', '24/11/2013, 12:30', '31/12/2015']
我尝试了以下排序:

lst.sort(key=lambda date: datetime.strptime(date, "%d/%m/%Y, %H:%M"))
但是由于我不知道日期会是什么(有具体的时间还是没有),我被卡住了。。我想不出一个通用的条件来对这个列表进行排序,如果给定的话,我需要保留准确的时间(即我不想分割字符串,只取
之前的内容)


请帮助:(

您可以在键函数中使用
if-else
语句:

>>> lst.sort(key=lambda d: datetime.strptime(d, "%d/%m/%Y, %H:%M") if ':' in d else datetime.strptime(d, "%d/%m/%Y"))
>>> lst
['24/11/2013, 12:30', '15/11/2014', '31/12/2015', '11/04/2016, 23:55', '04/05/2016, 23:55']
>>> 
如果您可能有2个以上的日期格式,您可以在一个非内嵌函数中处理多个状态

def key_func(dat):
    if ':' in dat:
        return datetime.strptime(d, "%d/%m/%Y, %H:%M")
    elif cond2: 
        # return val2
    elif cond3:
        # return val3

非常感谢!!我不知道你可以在lambda函数中添加条件,这正是我需要的。谢谢!