在python中,按具有优先级的列对矩阵排序
我有以下矩阵:在python中,按具有优先级的列对矩阵排序,python,sorting,matrix,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]) 要按第四列对矩阵进行排序,只需使键函数返回元组: c
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])
要按第四列对矩阵进行排序,只需使键函数返回元组:
catch.sort(key=lambda x: (x[3], len(x[0])))
这是因为两个元组是逐项比较的,从索引0开始,一发现差异就停止(或者其中一个元组的项用完了,在这种情况下,较长的元组被认为较大,但这与此无关,因为我们的元组都有2的长度)。请解释问题是什么?