【问题标题】:Order a matrix by columns with priority in python在python中按优先级对矩阵进行排序
【发布时间】:2017-05-31 15:23:04
【问题描述】:

我有以下矩阵:

catch = [['fc', 2, 12, 2], 
 ['abcd', 1, 2, 0], 
 ['ab', 1, 0, 0], 
 ['cf', 1, 13, 0], 
 ['fc', 1, 14, 0], 
 ['f', 1, 11, 0]] 

我希望这个矩阵首先按第四列(索引 3)排序,当第四列的值相等时,按第一列中字符串的长度排序(索引 0)。

我刚用过

catch.sort(key=lambda x: x[3]) 

按第四列对矩阵进行排序

【问题讨论】:

  • 请解释一下是什么问题?

标签: python sorting matrix


【解决方案1】:

只要让你的键函数返回一个元组:

catch.sort(key=lambda x: (x[3], len(x[0]))) 

这是因为两个元组逐项比较,从索引 0 开始,一旦发现差异就停止(或者其中一个元组用完项目,在这种情况下,较长的元组被认为更大,但这在这里无关紧要,因为我们的元组的长度都是 2)。

【讨论】:

    猜你喜欢
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多