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中文网其他相关文章!