如何根据子列表的长度对列表进行排序

raj*_*v90 17 python list python-2.7

我有以下清单

a = [['a', 'b', 'c'], ['d', 'e'], ['f', 'g', 'h'], ['i', 'j', 'k', 'l'], ['m', 'n'], ['o']]
Run Code Online (Sandbox Code Playgroud)

我想根据子列表的长度对列表进行排序.结果应该是:

a = [['o'],['d','e'],['m', 'n'],['a', 'b', 'c'],['f', 'g', 'h'], ['i','j','k','l']]
Run Code Online (Sandbox Code Playgroud)

Ali*_*lik 36

使用和中key可用的参数.它指定一个参数的函数,用于从每个列表元素中提取比较键sortsorted

In [6]: a = [['a', 'b', 'c'], ['d', 'e'], ['f', 'g', 'h'], ['i', 'j', 'k', 'l'], ['m', 'n'], ['o']]

In [7]: a.sort(key=len)

In [8]: print a
[['o'], ['d', 'e'], ['m', 'n'], ['a', 'b', 'c'], ['f', 'g', 'h'], ['i', 'j', 'k', 'l']]
Run Code Online (Sandbox Code Playgroud)

  • 一个小的调整,按照子阵列长度的递减顺序对数组进行排序:`a.sort(key = len,reverse = True)` (8认同)

sac*_*ena 7

可以通过以下方式完成

sorted(a, key=len)
Run Code Online (Sandbox Code Playgroud)