Python-按多个列索引对列表进行排序

Python-按多个列索引对列表进行排序,python,sorting,multiple-columns,Python,Sorting,Multiple Columns,假设我在Python中有以下列表x [['a',6,'aa'] ['d',7,'bb']] ['c',1,'cc'] ['a',4,'dd'] ['d',2,'ee']] 我想对它的元素进行排序,以得到以下结果 [['a',4,'dd'] ['a',6,'aa'] ['c',1,'cc'] ['d',2,'ee'] ['d',7,'bb']] 也就是说,我想按两列对其进行排序,第一列(最重要)和第二列(不太重要)。这可能是一个重复的问题,但我还没有找到解决方案…以下按第一个元素排序,然后按第

假设我在Python中有以下列表x

[['a',6,'aa']
['d',7,'bb']]
['c',1,'cc']
['a',4,'dd']
['d',2,'ee']]
我想对它的元素进行排序,以得到以下结果

[['a',4,'dd']
['a',6,'aa']
['c',1,'cc']
['d',2,'ee']
['d',7,'bb']]

也就是说,我想按两列对其进行排序,第一列(最重要)和第二列(不太重要)。这可能是一个重复的问题,但我还没有找到解决方案…

以下按第一个元素排序,然后按第二个元素排序:

>>> sorted(a, key=lambda x:(x[0], x[1]))
[['a', 4, 'dd'], ['a', 6, 'aa'], ['c', 1, 'cc'], ['d', 2, 'ee'], ['d', 7, 'bb']]

由于您是否也按第三列进行排序并不重要,因此可以在此处使用普通的
排序
,并获得相同的结果:

>>> sorted(a)
[['a', 4, 'dd'], ['a', 6, 'aa'], ['c', 1, 'cc'], ['d', 2, 'ee'], ['d', 7, 'bb']]
这是因为列表是从左到右比较的,并按字典顺序排序

如果确实希望按任意列顺序排序,则应使用,这比使用
键的
lambda
函数要快

>>> import operator
>>> sorted(a, key=operator.itemgetter(1, 0))  # order by column 1 first, then 0.
[['c', 1, 'cc'], ['d', 2, 'ee'], ['a', 4, 'dd'], ['a', 6, 'aa'], ['d', 7, 'bb']]

如果从第一个元素到最后一个元素应用排序,则可以简单地使用
sorted
作为
sorted
自动处理

a = [['a',6,'aa'],['d',7,'bb'],['c',1,'cc'],['a',4,'dd'],['d',2,'ee']]
sorted(a)

[['a', 4, 'dd'],
['a', 6, 'aa'],
['c', 1, 'cc'],
['d', 2, 'ee'],
['d', 7, 'bb']]
您可以尝试:“data.sort(0)”