假设:
a = [[1,2,3], [1,2], [1,1,1,1]]
如何根据值的总和对a
进行排序?
我尝试使用lambda,但是它因lambda错误而不允许使用可变数量的参数:
a.sort(lambda x: sum(x))
TypeError: <lambda>() takes exactly 1 arguments (2 given)
之前是一个简化的例子;我实际上试图使用另一个带有多个参数的函数......这确实改变了问题。
a.sort(lambda x: len(my_function("123", x)))
希望答案可以在基础python中完成。
答案 0 :(得分:5)
a.sort(key=sum) # Need the 'key' keyword, and don't bother with lambda here.
是你想要的。
<强>输出:强>
[[1, 2], [1, 1, 1, 1], [1, 2, 3]]
修改强>
要修复多参数示例,只需再次指定key
参数:
a.sort(key=lambda arg1, arg2, etc: function(arg1, arg2, etc))
答案 1 :(得分:0)
试试这个,
>>> a = [[1,2,3], [1,2], [1,1,1,1]]
>>> print sorted(a, key=sum)
[[1, 2], [1, 1, 1, 1], [1, 2, 3]]
>>>