按日期排序Python对象列表(当一些是None时)

sha*_*ane 8 python sorting list

这是我上一个问题的略微更新

我有一个名为results的Python列表.结果列表中的大多数结果对象都有一个person对象,大多数person对象都有一个birthdate属性(result.person.birthdate).生日是一个日期时间对象.

我想用最早的第一个来命令生日的结果列表.但是,如果没有人物对象或人物对象没有生日,我仍然希望结果列表中包含结果.在列表的末尾将是理想的.

最恐怖的方式是什么?

Amb*_*ber 10

import datetime
results.sort(key=lambda r: r.person.birthdate
    if (r and r.person and r.person.birthdate)
    else datetime.datetime.now())
Run Code Online (Sandbox Code Playgroud)

(PS你可能刚刚编辑过上一个问题.)

  • 谢谢.我没有更新原件,因为我认为在得到正确答案后开始添加新要求可能会令人困惑. (8认同)
  • 考虑使用“datetime.datetime.max”而不是“datetime.datetime.now()”它读起来更干净。 (2认同)