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

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 OnResizeListener或OnDrawListener或类似的东西   java Orika映射嵌套子列表   保存时java Heroku请求超时代码H12   数据库在Java中出现socket读取超时异常的原因是什么?   java如何更改来自Sqlite数据库的特定数据在Listview中的行颜色   java JAXB解组器无法正确处理XML中的列表   java Android日期时区让我抓狂   java不透明属性在Swing中如何工作?   eclipse从JavaEE代码生成流程图   java如何在Hibernate中从相关表中获取计数   java Glassfish部署了项目的依赖项库   java使内容适合JavaFx中的WebView   java不满意的链接错误libcrypto。所以1.0.0   循环中java数组的使用   java找出哪个包调用服务