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

时间:2014-08-11 16:04:10

标签: python list lambda

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

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

最终,我应该得到以下内容:

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

3 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:4)

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

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

使用已排序并使用密钥lambda x[0],其中x[0]是每个子列表中的第一个元素

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

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

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

答案 2 :(得分:4)

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

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

如果您想创建另一个列表并保留list1未排序的使用:

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

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