Python 是否在忽略年份的情况下对datetime对象进行排序?

Python 是否在忽略年份的情况下对datetime对象进行排序?,python,datetime,sorting,Python,Datetime,Sorting,我有一个生日列表存储在对象中。在Python中,如何仅使用month和day参数对它们进行排序 比如说, [ datetime.datetime(1983, 1, 1, 0, 0) datetime.datetime(1996, 1, 13, 0 ,0) datetime.datetime(1976, 2, 6, 0, 0) ... ] 谢谢!:) 您可以使用月和日创建可用于排序的值: birthdays.sort(key = lambda d: (d.mont

我有一个生日列表存储在对象中。在Python中,如何仅使用
month
day
参数对它们进行排序

比如说,

[
    datetime.datetime(1983, 1, 1, 0, 0)
    datetime.datetime(1996, 1, 13, 0 ,0)
    datetime.datetime(1976, 2, 6, 0, 0)
    ...
]

谢谢!:)

您可以使用
创建可用于排序的值:

birthdays.sort(key = lambda d: (d.month, d.day))

如果日期存储为字符串,您可以说它们不是字符串,尽管看起来它们是字符串,但您可以使用的解析器:

>>> from dateutil.parser import parse
>>> from pprint import pprint
>>> bd = ['February 6, 1976','January 13, 1996','January 1, 1983']
>>> bd = [parse(i) for i in bd]
>>> pprint(bd)
[datetime.datetime(1976, 2, 6, 0, 0), 
 datetime.datetime(1996, 1, 13, 0, 0), 
 datetime.datetime(1983, 1, 1, 0, 0)]
>>> bd.sort(key = lambda d: (d.month, d.day)) # from sth's answer
>>> pprint(bd)
[datetime.datetime(1983, 1, 1, 0, 0),
 datetime.datetime(1996, 1, 13, 0, 0),
 datetime.datetime(1976, 2, 6, 0, 0)]
如果您的日期格式不同,您可以尝试进行模糊解析:

>>> bd = [parse(i,fuzzy=True) for i in bd] # replace line 4 above with this line

顺便说一句:我假设列表是datetime对象(如问题的第一部分所述),而不是字符串(如代码段所示)。是的,对此表示抱歉。我更改了示例以反映我的意图。:)
>>> bd = [parse(i,fuzzy=True) for i in bd] # replace line 4 above with this line