Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3中的排序函数_Python_Python 3.x_Sorting - Fatal编程技术网

Python 3中的排序函数

Python 3中的排序函数,python,python-3.x,sorting,Python,Python 3.x,Sorting,我想使用带有cmp函数的较旧python脚本,但它在Python3中不起作用。它引发了一个错误: TypeError: must use keyword argument for key function 我知道我应该避免使用cmp函数,而是使用key函数,但我不知道如何使用(我不懂Python,也不是程序员)。您能帮我根据您的要求更改以下部分吗 谢谢。只需返回正在排序的每个元组的第一个和最后一个元素,但要反转结果: ls.sort(key=lambda t: (res[t][0], res

我想使用带有
cmp
函数的较旧python脚本,但它在Python3中不起作用。它引发了一个错误:

TypeError: must use keyword argument for key function 
我知道我应该避免使用
cmp
函数,而是使用key函数,但我不知道如何使用(我不懂Python,也不是程序员)。您能帮我根据您的要求更改以下部分吗


谢谢。

只需返回正在排序的每个元组的第一个和最后一个元素,但要反转结果:

ls.sort(key=lambda t: (res[t][0], res[t][2]), reverse=True)

这正是
cmp
版本所比较的,但相反,
sort()
方法也会这样做。

使用
ls.sort(key=functools.cmp_to_key(func))
。(
list.sort
指的是这个)感谢您的回复。我现在试过了,但我收到了这样一条信息:“NameError:name'functools'未定义”@PaulRooney:这太过分了。没错,我不是在看他的代码,只是在看他如何使用他所拥有的。我添加了
import functools
行,现在我得到了
NameError:name'cmp'未定义
。不知怎么的,转换还不起作用。我收到此代码的“索引器:字符串索引超出范围”消息…@Sam updated,我错过了您的代码正在基于外部映射进行排序
res
。亲爱的@Martijn Pieters:对不起,我不知道您编辑了您的答案。不幸的是,我和以前一样:“NameError:name'cmp'未定义”指向
val=cmp((w2,t2),(w1,t1))
:(@Sam我的答案根本不使用
cmp
。删除所有
func
。啊,我明白了:)问题是,程序稍后试图调用
func
函数,删除后,我收到一条“NameError:name'func'未定义”错误消息。
ls.sort(key=lambda t: (res[t][0], res[t][2]), reverse=True)