在Python中对字符串列表进行排序

Sort list of lists of strings in Python

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

如何根据第一个元素对以下内容进行排序?

1
list1 = [["Value313",1],["Value421",3],["Value234",2]]

最后,我应该得到以下信息:

1
list1 = [["Value234",2],["Value313",1],["Value421",3]]


列表的默认排序顺序(按字典顺序)已经是您想要的顺序了。

1
2
3
4
>>> list1 = [["Value313",1],["Value421",3],["Value234",2]]
>>> list1.sort()
>>> print list1
[['Value234', 2], ['Value313', 1], ['Value421', 3]]

要对list1进行就地排序(不创建其他列表),请使用:

1
2
from operator import itemgetter
list1.sort(key=itemgetter(0))

如果要创建另一个列表并保留EDOCX1[2]未排序,请使用:

1
2
from operator import itemgetter
list2 = sorted(list1, key=itemgetter(0))

您可以使用lambda,但operator.itemgetter通常具有更好的性能,因为它处于C级别。


1
2
3
sorted(list1,key=lambda x : x[0])

[['Value234', 2], ['Value313', 1], ['Value421', 3]]

使用排序后的键lambda x[0],其中x[0]是每个子列表中的第一个元素。

或就地排序以避免创建新列表:

1
2
3
4
5
list1 = [["Value313",1],["Value421",3],["Value234",2]]

list.sort(list1,key=lambda x : x[0])
print list1
[['Value234', 2], ['Value313', 1], ['Value421', 3]]