python中简单而灵活的自然排序。

natsort的Python项目详细描述


快速描述

当您尝试对包含数字的字符串列表进行排序时,通常的python 排序算法按字典顺序排序,因此您可能无法得到 期待:

>>> a=['2 ft 7 in','1 ft 5 in','10 ft 2 in','2 ft 11 in','7 ft 6 in']>>> sorted(a)['1 ft 5 in', '10 ft 2 in', '2 ft 11 in', '2 ft 7 in', '7 ft 6 in']

注意,它有顺序('1','10','2')-这是因为列表是 按字典顺序排序 字母(即‘B’、‘BA’、‘C’)。

natsort 提供了一个帮助排序列表的函数 "自然"("自然"相当于L-定义,但通常意味着 基于意义而不是计算机代码点的排序)。 使用 natsorted 很简单:

>>> fromnatsortimportnatsorted>>> a=['2 ft 7 in','1 ft 5 in','10 ft 2 in','2 ft 11 in','7 ft 6 in']>>> natsorted(a)['1 ft 5 in', '2 ft 7 in', '2 ft 11 in', '7 ft 6 in', '10 ft 2 in']

natsorted 标识字符串中任意位置的数字并对其进行排序 当然。下面是您可以使用NatSort进行的一些其他操作 (另请参见 示例 快速入门指南,或 api 了解完整的详细信息)。

注意 NatSorted 被设计为替换内置 排序功能。像 排序的 natsorted的 排序不到位。 要对列表进行排序并将输出分配给同一个变量,必须 显式地将输出分配给变量:

>>> a=['2 ft 7 in','1 ft 5 in','10 ft 2 in','2 ft 11 in','7 ft 6 in']>>> natsorted(a)['1 ft 5 in', '2 ft 7 in', '2 ft 11 in', '7 ft 6 in', '10 ft 2 in']
>>> print(a)# 'a' was not sorted; "natsorted" simply returned a sorted list['2 ft 7 in', '1 ft 5 in', '10 ft 2 in', '2 ft 11 in', '7 ft 6 in']
>>> a=natsorted(a)# Now 'a' will be sorted because the sorted list was assigned to 'a'>>> print(a)['1 ft 5 in', '2 ft 7 in', '2 ft 11 in', '7 ft 6 in', '10 ft 2 in']

有关 自然排序的另一种方法。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java泛型和基类   ProcessBuilder或DefaultExecutor启动的“RunAs”子进程的java读取标准输出   java应用程序在尝试登录时突然停止   Java:神秘的Java未捕获异常处理程序[带代码]   java JavaFX NumberAxis自动范围无限循环   最新版本和旧版本冲突的java双Maven依赖关系   java如何导入带有部署变量类名的静态函数?   编译器构造不同的JDK更新会产生不同的Java字节码吗?   java无法在struts 1.1中上载任何超过250 MB大小的文件   java调整jcombobox下拉菜单的宽度   java如何在某些情况下忽略@SQLDelete注释   在Eclipse for Java EE developers edition中禁用HTML警告   java HttpUrlConnection重置请求属性   java@Provider资源未在rest应用程序中注册   java TOP N使用JPA连接   java在使用反射调用方法时区分int和Integer参数