我正在尝试根据日期时间字段进行排序。有些情况下字段可能为空("无")。
这会导致错误:
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 _'
之前没有日期时间他们丑陋的头脑,代码工作正常如下:
requests = sorted(unsortedrequests, key=attrgetter('depart_date'))
答案 0 :(得分:4)
由于某种原因,您已从属性(点)查找切换到字典(括号)查找。你的功能应该:
return x.depart_date or mindate
请注意,您可以将其作为lambda:
执行此操作requests = sorted(unsortedrequests, key=lambda x: x.depart_date or mindate)