1

我正在尝试根据条目的 id 对条目列表进行排序。

我试过这段代码,但没有用:

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

列表中的对象是具有 id 的条目。

这是我得到的错误:

TypeError:“InstrumentedAttribute”对象不可调用

有任何想法吗?

4

2 回答 2

7

key必须是一个函数,它接受一个列表条目并返回一个用于比较的值。

作为替代lambda,使用operator.attrgetter

entries.sort(key=attrgetter('id'))
于 2012-12-28T15:49:46.367 回答
3

正如错误告诉您的那样, Key 需要是一个函数,或者更准确地说,是一个可调用对象。

entries.sort(cmp=None, key=(lambda x:x.id), reverse=False)
于 2012-12-28T15:44:51.703 回答