按优先级在python中的列排序矩阵

时间:2017-05-31 15:23:04

标签: python sorting matrix

我有以下矩阵:

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

按第四列排序矩阵

1 个答案:

答案 0 :(得分:3)

只需让你的键功能返回一个元组:

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

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