Python 3中排序函数与比较函数的等价性
这在Python2.7中非常有效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
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。这太棒了。谢谢。