Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中字符串列表的排序列表_Python_List_Lambda - Fatal编程技术网

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]]