list.sort with lamba acception 2参数

时间:2016-12-22 11:26:58

标签: python sorting lambda

我从python 2.6升级到python 3.5.2,并且我已经更改为python 3.5.2并修复了几乎所有的更改。现在我在排序列表时遇到了问题。

我以前的代码如下:

somelist_variable = [{"idx" : 9, "name": "Syed"}, {"idx": 2, "name": "Mex"}]
somelist_variable.sort(lambda a, b: int(a.get("idx")) - int(b.get("idx")))

上面的代码在python 2.6中运行良好,但是它给出了一个错误python 3.5.2,我已经检查了很多地方将2个参数传递给lamba但我找不到任何东西。你们中的任何人都可以帮助我吗?

感谢。

3 个答案:

答案 0 :(得分:1)

好的,你可以解释一下你想要的吗?如果你只想通过" idx"对somelist_variable进行排序。关键字参数你应该写:

somelist_variable.sort(key=lambda a: int(a.get("idx")))

或高级

from operator import itemgetter
somelist_variable.sort(key=itemgetter('idx'))

答案 1 :(得分:0)

这适用于您的情况

{{user?.score}}

答案 2 :(得分:0)

该函数应该只接受一个参数。返回值越小,列表中的元素就越早出现:

somelist_variable.sort(key=lambda a: int(a.get("idx")))

此外,您必须明确指定list.sort的参数是关键字。