我有一个列表,例如[[1,2,"s"],[1,5,"e"],...]
,其中第三个值始终为s
或e
。如何调用sort()
以便根据以下内容对列表进行排序:
s
首先出现。由于
答案 0 :(得分:3)
您可以将自定义键功能传递给list.sort
,用于生成项目的比较键:
>>> l = [[1, 5, 'e'], [1, 2, 's'], [0, 4, 'e']]
>>> l.sort(key=lambda x: (x[0], -ord(x[2])))
>>> l
[[0, 4, 'e'], [1, 2, 's'], [1, 5, 'e']]
答案 1 :(得分:2)
编写自定义key
功能。
def sort_key(list_):
if list_[2] == 's':
return (list_[0], 0)
return (list_[0], 1)
test_list = [[1, 2, 's'], [1, 5, 'e'], [2, 4, 'e'], [2, 3, 's']]
test_list.sort(key=sort_key)
# [[1, 2, 's'], [1, 5, 'e'], [2, 3, 's'], [2, 4, 'e']]