为了账号安全,请及时绑定邮箱和手机立即绑定

如何在python中进行分层排序?

如何在python中进行分层排序?

慕慕森 2021-03-15 15:09:15
因此,我有一个2D数据数组,它们是从excel电子表格中获取的,该电子表格目前是根据具有关键性数据的列进行排序的。#rows contains my data that I'm sorting, it's a 2D arraysearchdict = dict(Critical=1, High=2, Medium=3, Low=4)rows.sort(key=lambda row: searchdict.get(row[11], 5))如果该列与该列相关,我想根据另一列进行排序,有人知道该如何处理吗?在此先感谢您的帮助。仅供参考:另一列包含数值数据
查看完整描述

3 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

在密钥中使用元组。通常认为此方法比连续执行两种操作更“ Pythonic”。

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


查看完整回答
反对 回复 2021-03-29
?
青春有我

TA贡献1784条经验 获得超8个赞

最好的选择是将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 


查看完整回答
反对 回复 2021-03-29
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

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


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

Python首先对索引为0的项目进行排序,然后对索引为1的项目进行排序。


查看完整回答
反对 回复 2021-03-29
  • 3 回答
  • 0 关注
  • 211 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信