我对web2py比较新,并且遇到了这种排序功能的问题:
sorted_rows = day_rows.sort(lambda r: r.inspection)
这会导致错误:
<type 'exceptions.TypeError'> <lambda>() takes exactly 1 argument (2 given)
day_rows是数据库选择的结果,在这种情况下,它包含大约20行。
我显然缺少一些基本的东西,但我无法弄明白。我将非常感谢任何帮助。
谢谢, 约翰
答案 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
对象,原始代码应该有效。