python3 自定义排序
方式1
- 利用 functools.cmp_to_key 方法,接受排序函数
from functools import cmp_to_key
def cmp_func(a, b):
if a+b >= b+a:
return 1
else:
return -1
方式2
class LargerNumKey(str):
def __lt__(x, y):
return x+y > y+x
题目:

对应解法1
class Solution:
def largestNumber(self, nums: List[int]) -> str:
if len(set(nums)) == 1 and nums[0] == 0: return '0'
def cm_func(a, b):
if a+b >= b+a:
return 1
else:
return -1
return ''.join(sorted([str(_) for _ in nums], key=cmp_to_key(cm_func), reverse=True))
对应解法2
class LargerNumKey(str):
def __lt__(x, y):
return x+y > y+x
class Solution:
def largestNumber(self, nums):
largest_num = ''.join(sorted(map(str, nums), key=LargerNumKey))
return '0' if largest_num[0] == '0' else largest_num