我有以下矩阵:
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])
按第四列排序矩阵
答案 0 :(得分:3)
只需让你的键功能返回一个元组:
catch.sort(key=lambda x: (x[3], len(x[0])))
这是有效的,因为从索引0开始逐项比较两个元组,一旦找到差异就停止(或者其中一个元组用完项目,在这种情况下,更长的元组被认为更大,但这里没有关系,因为我们的元组都有2)的长度。