按自定义功能对列表进行排序

时间:2019-11-19 13:51:59

标签: python

我有一个列表列表,我想主要按第一个(第零个)元素对它们进行排序,其次要按python 3.5的自定义函数进行排序,但是我无法做到这一点。

lst = [[1, 'A', 2], [2, 'C', 3], [2, 'A', 4], [2, 'B', 5], [3, 'D', 6]]

def cs(lst):
    if lst[1] == 'A':
        return 1
    if lst[1] == 'B':
        return 2
    return 3

lst.sort(key=lambda x: (x[0], cs)

。这是我尝试过的方法,但我无法找出为什么我没有得到预期的结果,即:1A,2A,2B,2C,3D。

有人有主意吗?

问题在于,由于某种原因,cs方法无法运行(如果我在此放置了一些打印消息,则不会打印出来)。

1 个答案:

答案 0 :(得分:2)

您需要按第二个值排序,如果出现平局,请考虑第一个值:

lst.sort(key=lambda x: (x[1], x[0]))
相关问题