Python是否有用于字符串自然排序的内置函数?

Python是否有用于字符串自然排序的内置函数?,第1张

Python是否有用于字符串自然排序的内置函数

在PyPI上有一个名为natsort的第三方库。对于你的情况,可以执行以下任一 *** 作:

>>> from natsort import natsorted, ns>>> x = ['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9']>>> natsorted(x, key=lambda y: y.lower())['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']>>> natsorted(x, alg=ns.IGNORECASE)  # or alg=ns.IC['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']

你应该注意,它natsort使用通用算法,因此它几乎可以处理你向其抛出的任何输入。如果你想了解为什么选择一个库而不是滚动自己的函数的更多详细信息,请查阅natsort文档的“ 如何工作”页面,尤其是“ 到处都是特殊情况”!部分。

如果需要排序键而不是排序功能,请使用以下公式之一。

>>> from natsort import natsort_keygen, ns>>> l1 = ['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']>>> l2 = l1[:]>>> natsort_key1 = natsort_keygen(key=lambda y: y.lower())>>> l1.sort(key=natsort_key1)>>> l1['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']>>> natsort_key2 = natsort_keygen(alg=ns.IGNORECASE)>>> l2.sort(key=natsort_key2)>>> l2['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/4902707.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存