如何通过在最后保留一些元素来对 python 列表进行排序

How to sort python list by keeping some elements in the end

我想根据大陆对国家/地区列表进行排序,但希望将 'Rest of Asia' 和 'Rest of America' 保留在末尾。我们如何修改排序功能

A = ['China', 'India', 'Brazil', 'Canada', 'Rest of Asia', 'Rest of America', 'USA', 'UAE', 'Sri Lanka']
sorted(A)

我想要美洲其他地区和亚洲其他地区排在最后的结果

喜欢: ['China', 'India', 'Brazil', 'Canada', 'USA', 'UAE', 'Sri Lanka', 'Rest of Asia','Rest of America']

删除元素,对列表进行排序,然后重新追加:

A = sorted([x for x in A if "Rest" not in x]).append([x for x in A if "Rest" in x])

如果您想要的只是最后以 Rest 开头的结果,您可以使用自定义排序器:

A = ['China', 'India', 'Brazil', 'Canada', 'Rest of Asia', 'Rest of America', 'USA', 'UAE', 'Sri Lanka']

def mySort(a):
    if a.startswith('Rest'):
        return 1
    return 0

A.sort(key=mySort)

Out[1]:
['China',
 'India',
 'Brazil',
 'Canada',
 'USA',
 'UAE',
 'Sri Lanka',
 'Rest of Asia',
 'Rest of America']

或使用匿名调用的更简单版本:

A.sort(key=lambda x: x.startswith('Rest'))