2 回答
TA贡献1794条经验 获得超8个赞
您可以访问保存日期的类属性,然后进行排序。像这样的东西:
from datetime import datetime
class A:
def __init__(self):
self.date = datetime.now()
some_instances = []
for i in range(3):
a = A()
some_instances.append(a)
some_instances = sorted(some_instances, key=lambda x: x.date)
for instance in some_instances:
print(instance, instance.date)
哪个打印:
# <__main__.A object at 0x7fda760e62b0> 2019-09-19 19:02:06.887805
# <__main__.A object at 0x7fda76031be0> 2019-09-19 19:02:06.887810
# <__main__.A object at 0x7fda7603f908> 2019-09-19 19:02:06.887811
TA贡献1993条经验 获得超5个赞
就list.sort()而言,处理这个问题的方法是他们的key
论点。您可能想要执行以下操作:
def key(x): return x.date
或者,如果您真的想使用 lambda:
lambda x: x.date
但请注意,这只会按日期排序。如果要按所有属性排序,则有两种选择。
您可以让 key 函数返回要排序的属性元组,或者
您可以在类上定义比较方法。
可以在此处找到比较方法的文档。它们允许您在类的实例之间进行实际比较,这意味着您根本不需要向 list.sort() 传递任何内容。
添加回答
举报