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]
才能工作。