1

因此,我有一个从 excel 电子表格中获取的二维数据数组,我目前正在根据包含关键性数据的列对其进行排序。

#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))

如果它与该列平局,我想根据另一列进行排序,有人知道如何处理吗?提前感谢您的帮助。

仅供参考:另一列包含数字数据

4

3 回答 3

7

在您的密钥中使用元组。这种方法通常被认为比连续进行两种排序更“pythonic”。

key=lambda row: (searchdict.get(row[11], 5), row[other_column]))
于 2013-05-31T20:24:07.560 回答
1

最好的选择是将 key 与 python 的元组排序一起使用。

#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 
于 2013-05-31T20:28:44.607 回答
0

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

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

Python首先对索引为0的项目进行排序,而不是对索引为1的项目进行排序。

于 2013-05-31T20:28:35.227 回答