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]] |
要对
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]] |
使用排序后的键
或就地排序以避免创建新列表:
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]] |
号