使用lambda排序时出错

时间:2012-06-22 23:30:32

标签: web2py

我对web2py比较新,并且遇到了这种排序功能的问题:

sorted_rows = day_rows.sort(lambda r: r.inspection)

这会导致错误:

<type 'exceptions.TypeError'> <lambda>() takes exactly 1 argument (2 given)

day_rows是数据库选择的结果,在这种情况下,它包含大约20行。

我显然缺少一些基本的东西,但我无法弄明白。我将非常感谢任何帮助。

谢谢, 约翰

1 个答案:

答案 0 :(得分:3)

我猜测你将day_rows转换为字典列表(因此它不再是DAL Rows对象),也许像db(db.mytable).select().as_list()这样做。在这种情况下,您调用标准Python sort()对象的list方法,其第二个参数是“cmp”,它接受两个参数。如果您想将day_rows保留为列表,可以执行以下操作:

day_rows.sort(key=lambda r: r['inspection'])

虽然这会对列表进行排序,而不是返回新列表。如果您想要一个新列表,请执行:

sorted_rows = sorted(day_rows, key=lambda r: r['inspection'])

否则,将day_rows保留为DAL Rows对象,原始代码应该有效。