假设我有以下列表。
foo = [["A", 1], ["B", 2], ["C", 1]]
我想按列表中的第二个元素排序,所以我运行以下内容。
foo.sort(key=lambda i: i[1])
现在,foo有以下顺序。
[['A', 1], ['C', 1], ['B', 2]]
在列表中的第二个元素相等的情况下,有没有一种好方法可以按第一个元素排序?说我想要的顺序如下。
[['C', 1], ['A', 1], ['B', 2]]
答案 0 :(得分:3)
只需将您的密钥设置为最后一个元素的元组即可。元组按您描述的方式自动排序(首先排序第一个元素,然后排序第二个,依此类推)。
foo.sort(key=lambda i: (i[1], i[0]))
请注意,如果您不希望原始列表按给定顺序排列,则可以直接对原始列表进行排序,如果您可以切换订单。如果您列出了foo = [[1, "A"], [2, "B"], [1, "C"]]
列表,那么您可以foo.sort()
进行查找。您可以通过执行foo = [reversed(i) for i in foo]
将您的列表转换为该格式。
答案 1 :(得分:2)
只需将第二个索引添加到sort函数:
foo.sort(key=lambda i: (i[1], i[0]))