如何使用Python自定义谓词排序

时间:2016-05-27 15:36:24

标签: python sorting python-3.x

我有一个列表,例如[[1,2,"s"],[1,5,"e"],...],其中第三个值始终为se。如何调用sort()以便根据以下内容对列表进行排序:

  1. 第一个索引
  2. 如果第一个索引相同,则s首先出现。
  3. 由于

2 个答案:

答案 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']]