按升序对月份名称字符串列表进行排序

man*_*ish 1 python sorting date list python-3.x

有人可以指导如何对月份列表进行排序吗?

INPUT = ['August', 'September', 'October', 'November', 'December', 'January']

OUTPUT= ['January','August', 'September', 'October', 'November', 'December']
Run Code Online (Sandbox Code Playgroud)

ggo*_*len 5

calendar.month_name是按正确顺序排列的月份数组。您可以按此列表中每个字符串的索引进行排序,假设您的输入字符串格式正确:

>>> from calendar import month_name
>>> months = ['August', 'September', 'October', 'November', 'December', 'January']
>>> month_lookup = list(month_name)
>>> sorted(months, key=month_lookup.index)
['January', 'August', 'September', 'October', 'November', 'December']
Run Code Online (Sandbox Code Playgroud)

您还可以使用datetime.strptime"%B"完整月份名称匹配的格式字符串。

>>> from datetime import datetime
>>> months = ['August', 'September', 'October', 'November', 'December', 'January']
>>> sorted(months, key=lambda m: datetime.strptime(m, "%B"))
['January', 'August', 'September', 'October', 'November', 'December']
Run Code Online (Sandbox Code Playgroud)

请注意,这两种解决方案都会在包含无效月份字符串的列表中引发错误。