from functools import cmp_to_key
class Solution:

def solve(self,nums):
    strs=map(str,nums)      # 将整型的数字转化为字符串
    def cmp1(x, y):           # x=20,y=4
        if  y+x> x+y:       # 如果420>204,交换20和4的位置,变成4和20
            return 1
        else:
            return -1
    temp = sorted(strs, key=cmp_to_key(cmp1))
    return "".join(temp if temp[0] != '0' else '0')

cmp_to_ke用法:

import functools
x=[1,3,2,4,5]
def cmp_rise(a,b):
'''
升序排序:
当前面的参数a小于后面的参数b返回-1,-1代表保持不变,
当前面的的参数a大于等于后面的参数b返回1,1代表交换顺序。
因此保证了前面的数子小于后面的数字,是升序排序。
'''
if a <b:
return -1
else:
return 1

def cmp_decline(a,b):
'''
降序排序:
当前面的参数a小于后面的参数b返回1,1代表交换顺序,
当前面的的参数a大于等于后面的参数b返回-1,-1代表保持不变。
因此保证了前面的数子大于后面的数字,是降序排序。
'''
if a <b:
return 1
else:
return -1
x_sorted_by_rise=sorted(x,key=functools.cmp_to_key(cmp_rise))
x_sorted_by_decline=sorted(x,key=functools.cmp_to_key(cmp_decline))
print(x) # 输出结果:[1, 3, 2, 4, 5]
print(x_sorted_by_rise) # 输出结果:[1, 2, 3, 4, 5]
print(x_sorted_by_decline) # 输出结果:[5, 4, 3, 2, 1]