Python:按“列”排序列表

Python: sorting a list by “column”

本问题已经有最佳答案,请猛点这里访问。

如何按"列"对列表进行排序,即按每个列表的第i个元素对列表进行排序?

例如:

1
2
3
4
5
6
7
8
9
10
11
12
a=[['abc',5],
   ['xyz',2]]

print sortByColumn(a,0)

[['abc',5],
 ['xyz',2]]

print sortByColumn(a,1)

[['xyz',2],
 ['abc',5]]


你可以用sort和它的key参数等于lambda function

1
2
3
4
5
sorted(a, key=lambda x: x[0])
[['abc', 5], ['xyz', 2]]

sorted(a, key=lambda x: x[1])
[['xyz', 2], ['abc', 5]]

另一种方法是将keyoperator.itemgetter一起使用,这将创建所需的lambda函数:

1
2
3
from operator import itemgetter
sorted(a, key=itemgetter(1))
[['xyz', 2], ['abc', 5]]