Python 3中排序函数与比较函数的等价性

Python 3中排序函数与比较函数的等价性,python,python-3.x,python-2.7,sorting,Python,Python 3.x,Python 2.7,Sorting,这在Python2.7中非常有效 def some_compare_func(x, y): .... a = sorted(some_list, lambda x, y: some_compare_func(x, y)) 但是,在Python3.x中也会出现同样的错误 TypeError: sorted expected 1 arguments, got 2 有没有一种方法可以使用在Python 2.7和3.x中都可以使用的排序函数进行排序?您可以使用functools.cmp\u t

这在Python2.7中非常有效

def some_compare_func(x, y):
  ....

a = sorted(some_list, lambda x, y: some_compare_func(x, y))
但是,在Python3.x中也会出现同样的错误

TypeError: sorted expected 1 arguments, got 2

有没有一种方法可以使用在Python 2.7和3.x中都可以使用的排序函数进行排序?

您可以使用
functools.cmp\u to\u key()将python2样式
cmp
转换为
key

下面的代码应该可以在python2和python3中使用

def some_compare_func(x, y):
  ....

import functools
a = sorted(some_list, key=functools.cmp_to_key(some_compare_func))

查看更多详细信息

,但是它不再适用于Python 2.7。伙计,这很烦人:(是的,试过了,在2.7中不起作用。说TypeError:()正好接受1个参数(给定2个)您能给出一个实际的最小可重复性示例吗?您还必须通过关键字参数指定键,如
key=lambda
。您可能想看看,它解释了如何将使用Python 2排序的代码移植到Python 3。这太棒了。谢谢。