Пользовательские сравнения дали другой результат - PullRequest
0 голосов
/ 28 мая 2020

Я не могу понять, почему эти два типа пользовательских сравнений дают разные результаты, разве они не должны давать одинаковый результат?

один использует класс

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...