1

我对 web2py 比较陌生,并且在使用这种排序功能时遇到了问题:

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

这会导致错误:

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

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

我显然错过了一些基本的东西,但我无法弄清楚。我将不胜感激任何帮助。

谢谢,约翰

4

1 回答 1

3

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

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

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

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

否则,将 day_rows 保留为 DALRows对象,您的原始代码应该可以工作。

于 2012-06-23T03:50:43.843 回答