如何在Python 3中基于内部列表的长度对列表进行排序

Fre*_*Alb 0 python sorting nested list

我想基于子列表中第二项的长度对列表列表进行排序,如下所示:

输入:

list = [['A', '1234', 'X'],['B', '12', 'X'],['C', '12345', 'X'],['D', '123', 'X']]
Run Code Online (Sandbox Code Playgroud)

输出:

list = [['C', '12345', 'X'],['A', '1234', 'X'],['D', '123', 'X'],['B', '12', 'X']]
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有:

list = sorted(list, key=len, reverse=True)
Run Code Online (Sandbox Code Playgroud)

但是我不确定如何让它查看列表中特定项目的长度。提前致谢!

Rak*_*esh 6

使用sortsorted搭配自定义键。

例如:

data = [['A', '1234', 'X'],['B', '12', 'X'],['C', '12345', 'X'],['D', '123', 'X']]
data.sort(key=lambda x: len(x[1]), reverse=True)
Run Code Online (Sandbox Code Playgroud)

要么 sorted

data = sorted(data, key=lambda x: len(x[1]), reverse=True)
Run Code Online (Sandbox Code Playgroud)
print(data)
Run Code Online (Sandbox Code Playgroud)