2012-12-28 28 views
1

我在嘗試根據條目的ID對條目列表進行排序。Python使用外鍵對列表進行排序

我想這個代碼,但沒有奏效:

entries.sort(cmp=None, key=Entry.id, reverse=False) 

在列表中的對象是項至極有一個id

這是我的錯誤:類型錯誤:「InstrumentedAttribute」對象不可回收

任何想法?

在此先感謝!

+0

爲什麼downvote? – Antimony

回答

7

key必須是一個函數,一個列表條目,並返回在比較中使用的值。

作爲替代lambda,使用operator.attrgetter

entries.sort(key=attrgetter('id')) 
+1

這比lambda解決方案快得多 – XORcist

4

正如錯誤告訴你的,Key需要是一個函數,或者更準確地說是一個可調用的對象。

entries.sort(cmp=None, key=(lambda x:x.id), reverse=False) 
+3

而你不需要cmp =參數。當然,也不要反過來,但爲了清晰起見,添加默認值即可。但在'cmp ='的情況下,不會增加清晰度。 –

相關問題