喜欢排序,但使用外部排序,以便大数据集可以排序。

xsorted的Python项目详细描述


https://travis-ci.org/moagstar/xsorted.svg?branch=masterhttps://coveralls.io/repos/github/moagstar/xsorted/badge.svg?branch=master

排序

类似于sorted,但使用外部排序以便可以对大型数据集进行排序,例如:

>>> from random import random
>>> from six.moves import xrange
>>> from xsorted import xsorted
>>> nums = (random() for _ in xrange(pow(10, 7)))
>>> for x in xsorted(nums): pass

唯一的限制是这些项必须是可pickle的(或者您可以提供自己的序列化程序用于外部化 项目的分区)。

动机

有时需要对数据集进行排序,而不必将整个数据集加载到内存中。例如,如果你 希望将一个非常大的csv文件按其列之一分组。有几种方法可以实现这一点, 常见的解决方案是使用unix命令sort。但是UNIX ^ {TT2}$不能提供Python的灵活性。 CSV模块。xsorted尝试以类似的方式泛化任何python iterable的外部排序,其中 sorted泛化任何iterable的排序。

安装

$ pip install xsorted

使用量

就像sorted

>>> from xsorted import xsorted
>>> ''.join(xsorted('qwertyuiopasdfghjklzxcvbnm'))
'abcdefghijklmnopqrstuvwxyz'

使用reverse

>>> ''.join(xsorted('qwertyuiopasdfghjklzxcvbnm', reverse=True))
'zyxwvutsrqponmlkjihgfedcba'

还有一个定制的key

>>> list(xsorted(('qwerty', 'uiop', 'asdfg', 'hjkl', 'zxcv', 'bnm'), key=lambda x: x[1]))
['uiop', 'hjkl', 'bnm', 'asdfg', 'qwerty', 'zxcv']

可以使用工厂xsorter自定义xsorted的实现细节(以便提供 与^{tt1}相同的接口$分区大小被视为实现细节:

>>> from xsorted import xsorter
>>> xsorted_custom = xsorter(partition_size=4)
>>> ''.join(xsorted_custom('qwertyuiopasdfghjklzxcvbnm'))
'abcdefghijklmnopqrstuvwxyz'

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

推荐PyPI第三方库


热门话题
java在搜索二进制搜索树时遇到问题   当try block中的多行抛出异常时,java使用TryWithResources而不是finally block   java什么时候需要动态多态性(与静态多态性相比)?   从对象类型的角度来看,java的子类是否与racine类等价?   JavaSpring数据JDBConetomany关系会导致大量日志警告   Java:无法更改响应标头中的“ContentDisposition”属性   Java:我可以直接初始化函数而不将其转换为变量吗?   java do,而游标仅从数组返回3个值   java StoredProcedureQuery多输出类型   java ForLoops最大和最小数   如何在java中的任何机器上读取文本文件   java从嵌套标记中获取XML字符串中包含的值   java如何解决Spring批处理作业运行期间的连接重置异常?   我在运行时创建的java Swing组件没有显示在JPanel中   Apache Jena:Error:“java.lang.NoClassDefFoundError:org/Apache/Jena/riot/RDFDataMgr”   java访问嵌套接口数据变量   java如果CopyOnWriteArrayList中的项目被不同的线程更新和读取,我需要同步它们吗?   在Java数组中不断迭代   java组织。贾维斯。常见的例外JaversException:NOT_INSTANCE_OF:无法为EntityType创建InstanceId