2010-06-23 90 views
0

我有一個未排序的對象列表,每個列表都有一個end_date屬性。基於對象屬性對列表中的對象進行排序/分類的最有效方法

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

我想用一個看起來像這樣的列表,以結束:

[ 「週六,5月5日」,[OBJ 3,obj5],[ 「週一,5月7日」,[OBJ1,obj8, obj9]] ... etc]

基本上只是一個列表清單,其中「key」是來自對象的日期,該鍵的值是具有該日期的對象列表。不要擔心日期格式,這只是一個簡單的日期時間操作。我知道使用字典相對容易,但我需要最終得到一個按鍵排序的列表,而且不能用字典(至少不使用Python 2.6 IIRC)執行此操作。

什麼是最有效的方法來做到這一點?我一直在通過一些for循環來解決一些問題,但似乎我錯了。

+0

你嘗試過什麼?請顯示你的混淆代碼。它有助於提出更多**具體**問題。 – 2010-06-23 02:23:42

+0

完全使用不同的方法 - 首先使用sort(key = lambda obj:obj.date)按日期排序列表,然後傳遞給django模板引擎並使用重組函數。謝謝您的幫助! – Andrew 2010-07-06 04:35:44

回答

0

你說你知道如何得到一個字典。所以,僅僅對結果進行排序:

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

應該O(n log n)

您可以到sorted提供的排序方法爲好,如果你想操縱你的日期類型。看到一個sorting in python overview

0

把它放進字典,然後使用l=list(dictionary.iteritems())以獲取列表和l.sort()對它進行排序

1
itertools.groupby(sorted(L, key=operator.attrgetter('end_date')), 
    key=operator.attrgetter('end_date')) 
相關問題