Ayr*_*yrx 4 python sorting python-3.x
假设我有以下列表。
foo = [["A", 1], ["B", 2], ["C", 1]]
Run Code Online (Sandbox Code Playgroud)
我想按列表中的第二个元素排序,因此我运行以下命令。
foo.sort(key=lambda i: i[1])
Run Code Online (Sandbox Code Playgroud)
现在, foo 有以下顺序。
[['A', 1], ['C', 1], ['B', 2]]
Run Code Online (Sandbox Code Playgroud)
如果列表中的第二个元素相等,是否有一个好方法按第一个元素排序?说我想要的顺序如下。
[['C', 1], ['A', 1], ['B', 2]]
Run Code Online (Sandbox Code Playgroud)
只需将键设置为最后一个元素的元组,然后是第一个元素。元组会按照您描述的方式自动排序(首先对第一个元素进行排序,然后对第二个元素进行排序,依此类推)。
foo.sort(key=lambda i: (i[1], i[0]))
Run Code Online (Sandbox Code Playgroud)
请注意,如果您并不绝对需要原始列表按给定的顺序排列,则可以直接对原始列表进行排序(如果您可以切换顺序)。如果您列出了清单,foo = [[1, "A"], [2, "B"], [1, "C"]]
那么您就可以这样做foo.sort()
,仅此而已。您可以通过执行以下操作将列表转换为该格式foo = [reversed(i) for i in foo]
。
归档时间: |
|
查看次数: |
2150 次 |
最近记录: |