亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在python中按日期對類實例列表進行排序

在python中按日期對類實例列表進行排序

jeck貓 2022-06-02 12:07:23
我有一個包含類實例的列表,我想按日期對其進行排序,但我無法弄清楚如何做到這一點。它需要按升序排列。我正在處理的函數必須添加一個類的新實例,但在列表中按時間順序排列。我嘗試在列表中使用 for 循環并將新實例插入到它大于但只會導致我的最小實例翻倍的實例之前。我也嘗試使用 .sort 方法,我不確定如何使用它來實現。類的屬性 = name, id, datetime('some date'),content def add_new(self, new: class_name ) -> None:    """Add new instance to class_list the  for this class, if new_instance was posted at a    later date. Otherwise, do not add to class_list.    new_instances must be added in chronological order.    """    if reply.date >= self.date:        self._class_list.append(reply)    self._class_list.sort(key = lambda x: )我不確定要為 x 添加什么?因為類實例中的所有日期都采用 datetime('random date') 形式
查看完整描述

2 回答

?
幕布斯7119047

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


查看完整回答
反對 回復 2022-06-02
?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

list.sort()而言,處理這個問題的方法是他們的key論點。您可能想要執行以下操作:

def key(x):
    return x.date

或者,如果您真的想使用 lambda:

lambda x: x.date

但請注意,這只會按日期排序。如果要按所有屬性排序,則有兩種選擇。

  1. 您可以讓 key 函數返回要排序的屬性元組,或者

  2. 您可以在類上定義比較方法。

可以在此處找到比較方法的文檔。它們允許您在類的實例之間進行實際比較,這意味著您根本不需要向 list.sort() 傳遞任何內容。


查看完整回答
反對 回復 2022-06-02
  • 2 回答
  • 0 關注
  • 207 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號