如何在python中进行分层排序



所以我有一个从excel电子表格中获取的2D数据数组,我目前正在根据临界数据列进行排序。

#rows contains my data that I'm sorting, it's a 2D array
searchdict = dict(Critical=1, High=2, Medium=3, Low=4)
rows.sort(key=lambda row: searchdict.get(row[11], 5))

我想根据另一列排序,如果这一列是平局,有人知道如何处理这个吗?谢谢你的帮助。

供参考:另一列包含数值数据

在键中使用元组。这种方法通常被认为比在一行中进行两次排序更"python化"。

key=lambda row: (searchdict.get(row[11], 5), row[other_column]))

最好的选择是在python的元组排序中使用key。

#rows contains my data that I'm sorting, it's a 2D array
searchdict = dict(Critical=1, High=2, Medium=3, Low=4)
rows.sort(key=lambda row: (searchdict.get(row[11], 5), searchdict.get(row[<secondary column index here>], 5)))

这利用了元组中最左边的元素在比较中被认为更重要的事实,下面演示:

>>> (6, 5) > (5, 6)
True
>>> (6, 5) > (6, 4)
True
>>> (6, 5) > (6, 6)
False
>>> (2, 1, 1) > (1, 1000, 1000)
True 

使用元组作为排序键函数的返回值:

rows.sort(key=lambda row: (searchdict.get(row[11], 5), row[17]))

Python先对索引为0的项排序,后对索引为1的项排序。

最新更新