Python中字符串列表的排序列表
如何根据第一个元素对以下内容进行排序Python中字符串列表的排序列表,python,list,lambda,Python,List,Lambda,如何根据第一个元素对以下内容进行排序 list1 = [["Value313",1],["Value421",3],["Value234",2]] 最后,我应该得到以下几点: list1 = [["Value234",2],["Value313",1],["Value421",3]] 使用排序并使用键lambda x[0],其中x[0]是每个子列表中的第一个元素 或就地排序以避免创建新列表: list1 = [["Value313",1],["Value421",3],["Value234"
list1 = [["Value313",1],["Value421",3],["Value234",2]]
最后,我应该得到以下几点:
list1 = [["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]]
要就地排序
list1
(不创建另一个列表),请使用:
如果要创建另一个列表并保留未排序的list1
,请使用:
from operator import itemgetter
list2 = sorted(list1, key=itemgetter(0))
您可以使用lambda,但通常性能更好,因为它是C级的。列表的默认排序顺序(按字典顺序)已经是您想要的了
>>> list1 = [["Value313",1],["Value421",3],["Value234",2]]
>>> list1.sort()
>>> print list1
[['Value234', 2], ['Value313', 1], ['Value421', 3]]
list1.sort()
将对第一个元素上的list1(就地)进行排序,作为默认值,下一票到底是为了什么?当然,对于一对整数的列表,使用sorted
,我(旧)机器上的itemgetter
解决方案每循环执行207微秒,lambda
359微秒
from operator import itemgetter
list2 = sorted(list1, key=itemgetter(0))
>>> list1 = [["Value313",1],["Value421",3],["Value234",2]]
>>> list1.sort()
>>> print list1
[['Value234', 2], ['Value313', 1], ['Value421', 3]]