python中进行字符串排序

Posted

tags:

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

参考技术A python中没有直接的方法对字符串进行排序,原因是字符串类型是不允许直接修改元素的。
因此字符串排序的主要方法是将字符串转换成字符数组,
然后借用sorted函数进行排序,
最后用join方法重新拼装字符串。

输出结果

我们可以使用sort方法和sorted函数根据长度进行排序,方法是将键作为参数传递给排序的方法。

输出结果

我们可以将任何函数传递给key参数。sort方法将根据给定给键参数的函数的返回值对列表进行排序。同样的道理也适用于排序后的函数。

输出结果

输出结果

输出结果

使用Python对字符串格式的数字进行排序[重复]

【中文标题】使用Python对字符串格式的数字进行排序[重复]【英文标题】:Sorting numbers in string format with Python [duplicate] 【发布时间】:2011-02-05 12:40:13 【问题描述】:

我有一个列表,其中包含一些字符串中的章节编号。 当我使用键功能对键进行排序时,它给出了错误的结果。

键 = ['1.1', '1.2', '2.1', '10.1'] 键.sort() 打印键 ['1.1', '1.2', '10.1', '2.1']

如何使用排序功能得到

['1.1', '1.2', '2.1', '10.1']

如果数组有这样的东西怎么办?

['1.1.1', '1.2.1', '10.1', '2.1'] -> ['1.1.1','1.2.1','2.1','10.1']

【问题讨论】:

Proseek 试试这个:keys.sort(key=float),我刚学here 【参考方案1】:
keys.sort(key=lambda x: [int(y) for y in x.split('.')])

【讨论】:

【参考方案2】:
from distutils.version import StrictVersion
keys.sort(key=StrictVersion)

由于章节号是版本号的子集,这可以满足您的需求。

【讨论】:

为我工作。但是,我改用了同一模块中的LooseVersion,因为我对来自外部源的版本进行了排序。【参考方案3】:

这行得通:

keys.sort(key=lambda x: map(int, x.split('.')))

【讨论】:

+1 这对 python2 来说是一个很好的答案。在 Python3 中,排序映射不再起作用,因此您需要使用 list(map(...)),这比我认为的列表理解更丑。【参考方案4】:

sortsorted 提供自定义key 参数。

来自http://docs.python.org/library/functions.html#sorted:

key 指定一个参数的函数,用于从每个列表元素中提取比较键:key=str.lower。默认值为None(直接比较元素)。

【讨论】:

>>> float('1.1.1') ... ValueError: invalid literal for float(): 1.1.1

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

如何对在python中存储为字符串的整数列表进行排序[重复]

Python中字符串List按照长度排序 - python

Shell 按照字符串长度进行排序

在python中使用最后一个字符频率对二维列表进行排序

根据字符串的长度对 Python 列表进行排序

python怎么对字典进行排序