我有一个清单:
l = ['dylan', 'andy', 'alan', 'bob', 'but this must go last']
是否有任何pythonic方法按字母顺序对项目进行某些约束排序?我想要一个特定的项目作为最后一项,因此排序后的结果不是:
l.sort()
['alan', 'andy', 'bob', 'but this must go last', 'dylan']
而是:
['alan', 'andy', 'bob', 'dylan', 'but this must go last']
我想到的解决方案是从列表中删除特定项目,对其进行排序,然后将其放在最后。有更好的方法吗?
答案 0 :(得分:2)
不要过度思考。从列表中删除应该是最后的项目,对列表进行排序并将删除的项目添加到列表的末尾。
答案 1 :(得分:1)
所以,只需在排序时删除最后一个元素,然后将其放在最后:
i < N
或者,更一般地说,如果要排除第i个元素:
sorted(l[:-1]) + [l[-1]]
答案 2 :(得分:0)
如果您正在寻找更通用的解决方案,我认为您必须实现自己的自定义列表类并覆盖比较方法,就像它们在http://pythoncentral.io/how-to-sort-a-list-tuple-or-object-with-sorted-in-python/上所做的那样
另一种不同的方法是创建一个没有要结束的元素的列表,对新列表进行排序并附加翻录元素。
类似的东西:
new_list = sorted([item for item in l if item != 'but this must go last'])
new_list.append('but this must go last')