用python排序嵌套列表

用python排序嵌套列表,python,list,Python,List,我有一个嵌套列表 list_a = [['1 order', 15, 3 ], ['1 order', 29, 2], ['1 order', 5, 1], ['2 order', 2, 3], ['2 order', 1, 2], ['2 order', 17, 1], ['3 order', 2, 3], ['3 order', 10, 2], ['3 order', 1, 1]] 在对第二个元素应用排序之后 sort_by_second_attribute = sorted(list_

我有一个嵌套列表

list_a = 
[['1 order', 15, 3 ],
['1 order', 29, 2],
['1 order', 5, 1],
['2 order', 2, 3],
['2 order', 1, 2],
['2 order', 17, 1],
['3 order', 2, 3],
['3 order', 10, 2],
['3 order', 1, 1]]
在对第二个元素应用排序之后

sort_by_second_attribute = sorted(list_a, key = lambda k : k[1])
输出为

[['2 order', 1, 2],
['3 order', 1, 1],
['2 order', 2, 3],
['3 order', 2, 3],
['1 order', 5, 1],
['3 order', 10, 2],
['1 order', 15, 3],
['2 order', 17, 1],
['1 order', 29, 2]] 
但是,我想保持第一个属性的排序顺序,然后在第二个属性上排序。我想要的输出是

[['1 order', 5, 3],
['1 order', 15, 2],
['1 order', 29, 1],
['2 order', 1, 3],
['2 order', 2, 2],
['2 order', 17, 1],
['3 order', 1, 3],
['3 order', 2, 2],
['3 order', 10, 1]] 


但理想情况下,不要将数据存储在列表中,而是为其创建适当的对象。因为从您的代码中完全不清楚index=1或index=2是什么意思,这些索引下存储了什么数据。

您可以通过创建元组来使用辅助排序条件

list_b = sorted(list_a, key=lambda k: (k[0], k[1]))

您可以从键返回一个元组,egkey=lambda k:k[1],k[2],属性按该顺序排序。

您要问的几乎是默认的排序机制:sorted\u list=sortedlist\u a。这会引发语法错误,请参阅其他答案
list_b = sorted(list_a, key=lambda k: (k[0], k[1]))
(xenial)vash@localhost:~/python/stack_overflow$ python3.7 helping.py 
[['1 order', 5, 1], ['1 order', 15, 3], ['1 order', 29, 2], ['2 
order', 1, 2], ['2 order', 2, 3], ['2 order', 17, 1], ['3 order', 1,
1], ['3 order', 2, 3], ['3 order', 10, 2]]