如何通过内部列表的特定索引对列表进行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']]