按日期时间排序,可能没有值 - python

我正在尝试根据日期时间字段进行排序。在某些情况下,该字段可能为空(“无”)。

这会导致错误:

TypeError:无法将datetime.date与NoneType进行比较

看来this answer是解决此问题的理想方法,但它似乎不适用于我。有人可以解释我似乎忽略了哪些细节吗?我可以使用Python(不是很好),并且我理解这里应该发生的事情,但是感觉到我忽略了一些语法问题。

mindate = datetime.date(datetime.MINYEAR,1,1)

def getdepart_date(x):
    return x['depart_date'] or mindate

requests = sorted(unsortedrequests, key=getdepart_date)

当我运行它时,在返回行上出现以下错误(在getitem的两侧都带有双下划线):

TypeError:“ StudTransReq”对象没有属性“ __getitem_”

在None之前,它们的代码丑陋,如下所示:

requests = sorted(unsortedrequests, key=attrgetter('depart_date'))

python大神给出的解决方案

由于某种原因,您已从属性(点)查找切换为字典(中括号)查找。您的函数应执行以下操作:

return x.depart_date or mindate

请注意,您可以将其作为lambda来执行:

requests = sorted(unsortedrequests, key=lambda x: x.depart_date or mindate)