首页 >后端开发 >Python教程 >如何在Python中实现自然字符串排序?

如何在Python中实现自然字符串排序?

Patricia Arquette
Patricia Arquette原创
2024-12-26 11:17:09444浏览

How Can I Achieve Natural String Sorting in Python?

Python 中的自然字符串排序

在 Python 中,使用默认的 Sorted() 函数按字母顺序对字符串列表进行排序可能不会产生所需的结果“自然”秩序。这是因为sorted() 将字符串视为单个字符,导致排序不自然。

例如,考虑以下字符串列表:

['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']

使用sorted() 对此列表进行排序产生以下结果:

['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9']

这不是自然排序顺序,因为字母后面的数字是按字母顺序排列的,而不是被视为序列的一部分number.

要实现自然字符串排序,您可以使用 natsort 库。 Natsort 提供了以更直观的方式对字符串进行排序的函数,保留了数字的自然排序。

您可以使用 pip 安装 natsort:

pip install natsort

对给定的内容执行自然排序列表,使用 natsorted() 函数:

from natsort import natsorted

x = ['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9']
natsorted(x, key=lambda y: y.lower())

这将产生所需的自然排序order:

['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']

natsort_keygen() 函数也可用于创建排序键:

from natsort import natsort_keygen

natsort_key = natsort_keygen(key=lambda y: y.lower())
list.sort(key=natsort_key)

这将以与 natsorted() 相同的方式对列表进行排序。

除了 natsorted() 和 natsort_keygen() 之外,natsort 还提供os_sorted() 和 os_sort_keygen() 函数。这些函数允许您根据操作系统文件资源管理器的排序行为对列表进行排序,这可能与 natsort 的默认行为不同。

以上是如何在Python中实现自然字符串排序?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn