为什么functools.cmp_to_key()在比较时给我一个类型错误?

时间:2019-08-14 02:12:47

标签: python-3.x sorting

遇到此错误时,我正在做一些编码面试问题。我正在尝试使用functools.cmp_to_key()函数来使用我的比较函数,但是当它到达排序步骤时,它会给我TypeError: '<' not supported between instances of 'str' and 'int'

请忽略我的代码可能无法正确解决问题的事实-我真的很好奇为什么会出现该错误。

from typing import List
import functools

def comparison(a: str, b: str):
  print((a, b))
  if len(a) == 0:
    return b
  elif len(b) == 0:
    return a
  elif a[0] < b[0]:
    return a
  elif a[0] > b[0]:
    return b
  else:
    return comparison(a[1:], b[1:])

class Solution:
  def largestNumber(self, nums: List[int]) -> str:
    cmp = functools.cmp_to_key(comparison)
    res = sorted([str(x) for x in nums], key=cmp, reverse=True)
    return ''.join(res)

sol = Solution()
assert '232302' == sol.largestNumber([230, 23, 2])

编辑:这是使用Python 3.7.4 btw

1 个答案:

答案 0 :(得分:0)

没关系,我只是意识到我在滥用cmp函数。应该返回-1、0或1,而不是我确定的最小元素。