按日期排序Python对象列表

sha*_*ane 33 python sorting datetime

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

我希望按出生日期和最早的第一个订购清单.最恐怖的方式是什么?

Amb*_*ber 58

results.sort(key=lambda r: r.person.birthdate)
Run Code Online (Sandbox Code Playgroud)

  • 注意:list.sort就地排序而不是返回排序列表.如果你不想改变原始列表,请使用`sorted(results,key = ...)`. (4认同)
  • 是的,我已经删除了它; 有一个关于"最古老"的小脑筋. (2认同)

yen*_*sun 13

完全同意Amber,但还有另一种按属性排序的方法(来自wiki:https://wiki.python.org/moin/HowTo/Sorting):

from operator import attrgetter
sorted_list = sorted(results, key=attrgetter('person.birthdate'))
Run Code Online (Sandbox Code Playgroud)

这种方法实际上甚至比排序更快 lambda

  • 如果`'person.birdate'作为变量传递,`attrgetter()`很方便.否则,`lambda`更灵活(例如,如果'person`有时是无),在大多数情况下时差应该可以忽略不计. (2认同)