2015-08-21 234 views
0

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

例如:

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

print sortByColumn(a,0) 

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

print sortByColumn(a,1) 

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

有一个类似的问题在这里[如何排序(列表/元组)列表/元组的?] [1] [1]:http://stackoverflow.com/questions/3121979/how-to -sort列表,元组的-列表元组 – Hooting

回答

1

你可以使用sortkey参数等于lambda function

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函数:

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