python实现字符串列表排序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python实现字符串列表排序?相关的知识,希望对你有一定的参考价值。

比如列表
a = ['b','a','c','ab','aa','aaa']
期望排序后结果为:a,b,c,aa,ab,aaa
求教一些简单的实现方法,可以一起讨论
我能想到的就是把相同长度的字符串放一个列表,然后排序,再把所有列表组合起来,感觉比较麻烦

可以使用Python内置的sorted()函数对字符串列表进行排序,同时使用len()函数作为排序的关键字来实现按字符串长度排序。

例如,对于列表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 µslambda 每个循环 359 µs

以上是关于python实现字符串列表排序?的主要内容,如果未能解决你的问题,请参考以下文章

python实现列表的排序

Python代码实现归并排序

Python代码实现归并排序

python实现 列表内元素按照出现次数排序

python list排序问题

python字符串排序问题