簡體   English   中英

根據對象屬性對列表中的對象進行排序/分類的最有效方法

[英]Most efficient way to sort/categories objects in list based on object attribute

我有一個未排序的對象列表,每個對象都有一個end_date屬性。

列表看起來像[obj1,obj2,obj3,<...>],但沒有特定的順序。

我想得到一個看起來像這樣的列表:

[[“” Saturday,May 5“,[obj3,obj5]],[”“ Monday,May 7”,[obj1,obj8,obj9]]等等]

基本上只是一個列表列表,其中“鍵”是對象的日期,該鍵的值是具有該日期的對象的列表。 不必擔心日期格式,這只是一種簡單的日期時間操作。 我知道使用字典相對容易,但是我需要以鍵排序的列表結尾,而字典則不能這樣做(至少不是Python 2.6 IIRC)

最有效的方法是什么? 我一直在用一堆for循環來弄混一些解決方案,但是看來我做錯了。

itertools.groupby(sorted(L, key=operator.attrgetter('end_date')),
  key=operator.attrgetter('end_date'))

您說您知道如何將它付諸實踐。 因此,只需對結果進行排序:

d = ToDict(...)
sorted_values = sorted(((date,list) for date,list in d.iteritems()))

應該是O(n log n)

你可以提供一個排序方法, sorted為好,如果你想操縱你的日期類型。 請參閱python排序概述

將其放入字典中,然后使用l=list(dictionary.iteritems())獲取列表,並使用l.sort()進行排序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM