python - Python 3 中排序函数与比较函数的等效项

标签 python python-3.x python-2.7 sorting

这在 Python 2.7 中完美运行

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

a = sorted(some_list, lambda x, y: some_compare_func(x, y))

但是,在 Python 3.x 中同样会出现此错误。

TypeError: sorted expected 1 arguments, got 2

是否有一种方法可以使用同时适用于 Python 2.7 和 3.x 的排序函数进行排序?

最佳答案

可以转换python2风格cmpkey使用functools.cmp_to_key()

以下代码应该在 python2 和 python3 中都可以工作

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

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

检查https://docs.python.org/3/howto/sorting.html#the-old-way-using-the-cmp-parameter了解更多详情

关于python - Python 3 中排序函数与比较函数的等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57429471/

相关文章:

python - 在单个 xtick 处获取单行数据的三个数据点

python - 使用Python删除文件中的文件行数

python-3.x - 使用 Python 截断并重新编号与特定 id/组对应的列

python - 使用python修改文件内容

python - Pandas 操纵: Non-distinct groups

python GTK : How to insert items from list to combobox

python - 如何在 python 列表中追加元素时检查元素?

python - Lisp 的 read-eval-print 循环与 Python 的有何不同?

python - 如何从一个脚本打开两个控制台

python - boto3 创建不会过期的 URLS