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)
哪個打?。?/p>
# <__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條經驗 獲得超6個贊
就list.sort()而言,處理這個問題的方法是他們的key
論點。您可能想要執行以下操作:
def key(x): return x.date
或者,如果您真的想使用 lambda:
lambda x: x.date
但請注意,這只會按日期排序。如果要按所有屬性排序,則有兩種選擇。
您可以讓 key 函數返回要排序的屬性元組,或者
您可以在類上定義比較方法。
可以在此處找到比較方法的文檔。它們允許您在類的實例之間進行實際比較,這意味著您根本不需要向 list.sort() 傳遞任何內容。
添加回答
舉報