python - 如何通过将某些元素保留在末尾来对Python列表进行排序

标签 python list sorting skip

我想根据各大洲对国家/地区列表进行排序,但希望将“亚洲其他地区”和“美洲其他地区”保留在末尾。我们如何修改排序函数

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

我希望得到美国其他地区和亚洲其他地区最终应该达到的结果

喜欢: [“中国”、“印度”、“巴西”、“加拿大”、“美国”、“阿联酋”、“斯里兰卡”、“亚洲其他地区”、“美洲其他地区”]

最佳答案

如果您想要的只是最后以 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'))

关于python - 如何通过将某些元素保留在末尾来对Python列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57301540/

相关文章:

python - 从数据点不按时间匹配的时间序列图中求和/堆叠值的算法

python - 加载字典对象导致内存峰值

Python-添加到列表多次拼接、优化、算法

javascript - 在 JavaScript 中对 JSON 进行排序

ios - 如何在 swift 2.3 中按升序对数组进行排序

Python - 我读取了一个文件,但它显示了错误的值?

Python 线程循环

python - 用列表理解替换循环,而不是循环获取函数以在列表理解中返回新数组

java - ArrayList<String>.add 抛出 UnsupportedOperationException

javascript - 为什么这个 JavaScript 数组返回未定义?