我正在尝试根据日期时间字段进行排序。在某些情况下,该字段可能为空(“无”)。
这会导致错误:
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)