如何通过内部列表的特定索引对列表进行sorting?

我有一个列表清单。 例如,

[ [0,1,'f'], [4,2,'t'], [9,4,'afsd'] ] 

如果我想通过内部列表的string字段对外部列表进行sorting,那么您将如何在Python中做到这一点?

这是一个itemgetter的工作

 >>> from operator import itemgetter >>> L=[[0, 1, 'f'], [4, 2, 't'], [9, 4, 'afsd']] >>> sorted(L, key=itemgetter(2)) [[9, 4, 'afsd'], [0, 1, 'f'], [4, 2, 't']] 

在这里也可以使用lambda函数,但是在这种简单的情况下,lambda函数会比较慢

到位

 >>> l = [[0, 1, 'f'], [4, 2, 't'], [9, 4, 'afsd']] >>> l.sort(key=lambda x: x[2]) 

没有到位使用sorting:

 >>> sorted(l, key=lambda x: x[2]) 

Itemgetter允许您按多个条件/列进行sorting:

 sorted_list = sorted(list_to_sort, key=itemgetter(2,0,1)) 

喜欢这个:

 import operator l = [...] sorted_list = sorted(l, key=operator.itemgetter(desired_item_index)) 

lambda函数也可以实现多个条件

 sorted_list = sorted(list_to_sort, key=lambda x: (x[1], x[0])) 

我认为lambda函数可以解决你的问题。

 old_list = [[0,1,'f'], [4,2,'t'],[9,4,'afsd']] #let's assume we want to sort lists by last value ( old_list[2] ) new_list = sorted(old_list, key=lambda x: x[2]) #Resulst of new_list will be: [[9, 4, 'afsd'], [0, 1, 'f'], [4, 2, 't']]