Python以[MMM dd,MMM dd ...]格式排序日期列表

use*_*900 0 python sorting date operator-keyword

我有一个格式的列表

['Jan 01', 'Feb 02', 'Mar 05', 'Feb 04', 'Jan 05', ...]
Run Code Online (Sandbox Code Playgroud)

我想对它进行排序

['Jan 01', 'Jan 05', 'Feb 02', 'Feb 04', 'Mar 05'...]
Run Code Online (Sandbox Code Playgroud)

我知道的事情operator.itemgetter('date'),但不认为这将适用于这种格式

Mar*_*ers 6

您可以将日期解析为datetime对象:

from datetime import datetime

sorted(lst, key=lambda d: datetime.strptime(d, '%b %d'))
Run Code Online (Sandbox Code Playgroud)

datetime然后使用解析的对象来确定排序.

演示:

>>> from datetime import datetime
>>> lst = ['Jan 01', 'Feb 02', 'Mar 05', 'Feb 04', 'Jan 05']
>>> sorted(lst, key=lambda d: datetime.strptime(d, '%b %d'))
['Jan 01', 'Jan 05', 'Feb 02', 'Feb 04', 'Mar 05']
Run Code Online (Sandbox Code Playgroud)