Я не могу понять, почему эти два типа пользовательских сравнений дают разные результаты, разве они не должны давать одинаковый результат?
один использует класс
class node(str):
def __lt__(a, b):
y = a+b
x = b+a
return ((x > y)-(x < y))
def largestNumber(nums) -> str:
nums = map(str, nums)
nums = map(node, nums)
nums = sorted(nums)
return (str(int("".join(nums))))
print (largestNumber([3,30,34,5,9]))
# print "9534303"
другой использует functools.cmp_to_key
import functools
def largestNumber2(nums) -> str:
def compare(a, b):
y = a+b
x = b+a
return ((x > y)-(x < y))
nums = map(str, nums)
nums = sorted(nums, key = functools.cmp_to_key(compare))
return (str(int("".join(nums))))
print (largestNumber2([3,30,34,5,9]))
# print "9534330" which is the answer I want