Python:对嵌套列表排序

Python:对嵌套列表排序,python,sorting,Python,Sorting,我有一个嵌套列表,类似于以下结构: nested_list = [ ['text1', index1], ['text2', index2], ['text3', index3], [], ..., ['text12', index54] ]. “索引”项是一个整数,与列表的索引不对应。正如你所看到的,我也有一些空列表 我想根据“索引”项对这个嵌套列表进行排序。我目前的方法失败了: sorted_list = sorted(nested_list, key = lambda x: x[1])

我有一个嵌套列表,类似于以下结构:

nested_list = [ ['text1', index1], ['text2', index2], ['text3', index3], [], ..., ['text12', index54] ].
“索引”项是一个整数,与列表的索引不对应。正如你所看到的,我也有一些空列表

我想根据“索引”项对这个嵌套列表进行排序。我目前的方法失败了:

sorted_list = sorted(nested_list, key = lambda x: x[1])
我认为这是因为这些空列表,因为我收到以下错误:

IndexError 
list index out of range
因此,我尝试了以下方法:

sorted_list = sorted(nested_list, key = lambda x: x[1] if len(x) > 0)
sorted_list = sorted(nested_list, key = lambda x: x[1] and len(x) > 0)
但所有这些都是语法错误

我做错了什么?

A总是需要
其他的
部件。如果条件不成立,如何确定表达式的值:

sorted_list = sorted(nested_list, key = lambda x: x[1] if x else 0)
0
是否是有用的默认值取决于您的数据。如果你有否定的和积极的<代码>索引< /代码>值,空列表将被排序在中间某个地方。

a总是需要一个<代码>另一个>代码>部分。如果条件不成立,如何确定表达式的值:

sorted_list = sorted(nested_list, key = lambda x: x[1] if x else 0)

0
是否是有用的默认值取决于您的数据。如果你有否定的和积极的<代码>索引< /代码>值,空列表将在中间某个地方排序。< /P>你希望这些空列表在结尾还是开始?你可能想要<代码>键= lambda x:x(1),如果LeN(x)>0其他0 。或者,
sorted(filter(bool,nested_list),key=lambda x:x[1])
应该忽略任何空字段,不将它们包含在输出中。
x[1]如果len(x)>0
是语法错误,因为没有
else
大小写。
key=lambda x:x[1]如果len(x)>0 else 0
仍然会给我一个类型错误:'根据该错误,
x[1]
本身就是一个列表,在发布的数据结构中不是这样。您的实际数据结构是否有子列表?您希望这些空列表位于末尾还是开头?如果len(x)>0,则可能需要
key=lambda x:x[1],否则为0
。或者,
sorted(filter(bool,nested_list),key=lambda x:x[1])
应该忽略任何空字段,不将它们包含在输出中。
x[1]如果len(x)>0
是语法错误,因为没有
else
大小写。
key=lambda x:x[1]如果len(x)>0 else 0
仍然会给我一个类型错误:'根据该错误,
x[1]
本身就是一个列表,在发布的数据结构中不是这样。您的实际数据结构是否有子列表?
key=lambda x:x和x[1]
可能是better@python_learner这不起作用,因为如果x是
[]
,它将计算为
[]
,排序将失败。必须是
lambda x:len(x)和x[1]
才能工作。
key=lambda x:x和x[1]
可以better@python_learner这不起作用,因为如果x是
[]
,它将计算为
[]
,排序将失败。它必须是
lambda x:len(x)和x[1]
才能工作。