2012-12-28 27 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 ='的情况下,不会增加清晰度。 –

相关问题