在Python 2.x中,我可以将自定义函数传递给sorted和.sort函数
>>> x=['kar','htar','har','ar']
>>>
>>> sorted(x)
['ar', 'har', 'htar', 'kar']
>>>
>>> sorted(x,cmp=customsort)
['kar', 'htar', 'har', 'ar']
Run Code Online (Sandbox Code Playgroud)
因为,在我的语言中,配偶带有这个命令
"k","kh",....,"ht",..."h",...,"a"
Run Code Online (Sandbox Code Playgroud)
但在Python 3.x中,看起来我无法传递cmp关键字
>>> sorted(x,cmp=customsort)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'cmp' is an invalid keyword argument for this function
Run Code Online (Sandbox Code Playgroud)
有没有其他选择,还是我应该编写自己的排序函数?
注意:我通过使用"k","kh"等进行了简化.实际字符是Unicodes甚至更复杂,有时元组前后有元音,我已经完成了自定义比较功能,所以那部分还可以.唯一的问题是我无法将自定义比较函数传递给sorted或.sort
我正在尝试编写一个给出非负整数列表的函数,将它们排列成最大可能的数字.
例如,给定[50, 2, 1, 9],最大的数字是95021.
这是我试图解决问题的代码:
a = [50, 2, 1, 9]
a.sort()
ans = []
for i in range(len(a)-1,-1,-1):
ans.append(a[i])
print ''.join(map(str,ans))
Run Code Online (Sandbox Code Playgroud)
不过,我得到50921,因为50是最大的,但它应该显示9第一.