python实现字符串列表排序?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python实现字符串列表排序?相关的知识,希望对你有一定的参考价值。
比如列表
a = ['b','a','c','ab','aa','aaa']
期望排序后结果为:a,b,c,aa,ab,aaa
求教一些简单的实现方法,可以一起讨论
我能想到的就是把相同长度的字符串放一个列表,然后排序,再把所有列表组合起来,感觉比较麻烦
例如,对于列表a=['b','a','c','ab','aa','aaa'],可以使用以下代码进行排序:
python
sorted_a = sorted(a, key=len)
这将返回一个新的已排序的列表,其中字符串按照长度递增的顺序排列。对于相同长度的字符串,它们将按照它们在原始列表中出现的顺序排列。
如果你需要按照逆序排列,则可以传递reverse=True参数给sorted()函数:
python
sorted_a = sorted(a, key=len, reverse=True)
这将返回一个新的已排序的列表,其中字符串按照长度递减的顺序排列。 参考技术A a = ['b', 'a', 'c', 'ab', 'aa', 'aaa']
a.sort(key=lambda x: str(len(x)) + x)
print(a)
#['a', 'b', 'c', 'aa', 'ab', 'aaa']
Python中字符串列表的排序列表[重复]
【中文标题】Python中字符串列表的排序列表[重复]【英文标题】:Sort list of lists of strings in Python [duplicate] 【发布时间】:2014-10-04 12:52:07 【问题描述】:如何根据第一个元素对以下内容进行排序?
list1 = [["Value313",1],["Value421",3],["Value234",2]]
最终,我应该得到以下信息:
list1 = [["Value234",2],["Value313",1],["Value421",3]]
【问题讨论】:
list1.sort()
将在第一个元素上默认排序 list1(原位)
【参考方案1】:
列表的默认排序顺序(按字典顺序)已经是你想要的了。
>>> list1 = [["Value313",1],["Value421",3],["Value234",2]]
>>> list1.sort()
>>> print list1
[['Value234', 2], ['Value313', 1], ['Value421', 3]]
【讨论】:
【参考方案2】:sorted(list1,key=lambda x : x[0])
[['Value234', 2], ['Value313', 1], ['Value421', 3]]
使用 sorted 并使用键 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]]
【讨论】:
反对票的具体原因是什么?【参考方案3】:要对list1
进行就地排序(不创建另一个列表),请使用:
from operator import itemgetter
list1.sort(key=itemgetter(0))
如果你想创建另一个列表并留下list1
unsorted 使用:
from operator import itemgetter
list2 = sorted(list1, key=itemgetter(0))
您可以使用 lambda,但 operator.itemgetter 通常具有更好的性能,因为它处于 C 级别。
【讨论】:
我确实做到了,对于整数对列表并使用sorted
,我(旧)机器上的itemgetter
解决方案每个循环207 µs, lambda
每个循环 359 µs以上是关于python实现字符串列表排序?的主要内容,如果未能解决你的问题,请参考以下文章