按日期时间排序可能的无值

时间:2015-05-22 15:48:08

标签: python sorting

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

这会导致错误:

  

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'))

1 个答案:

答案 0 :(得分:4)

由于某种原因,您已从属性(点)查找切换到字典(括号)查找。你的功能应该:

return x.depart_date or mindate

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

执行此操作
requests = sorted(unsortedrequests, key=lambda x: x.depart_date or mindate)