Python——自定义排序 sort() / list.sort()

Python 自带的 sort() 函数默认是从小到大进行排序的,与C++的排序函数类似,也可以通过自定义排序函数来指定排序的规则。下面以牛客的一道例题来讲解:

这道题主要是对字符串数组按照字典序逆序进行排序,其中有两种特殊情况:
(1)空字符串排在最前;
(2)若一个短字符串是另一个长字符串的前缀则短字符串排在前面。
这里如果使用 python 自带的 sort / list.sort(),则是按照字典序升序排序。因此这里需要自定义排序函数,使其满足题目条件。

import functools

def mysort(x, y):
    if y.startswith(x):
        return -1
    elif x.startswith(y):
        return 1
    else:
        if x < y:
            return 1
        else:
            return -1
            
if __name__ == '__main__':
    string = input()
    string = string.split(',')
    string.sort(key=functools.cmp_to_key(mysort))
    num_str = len(string)
    for i in range(num_str):
        print(string[i], end='')
        if i != num_str - 1:
            print(',', end='')
        else:
            print('\n')

你可能感兴趣的:(python)