跳转到主要内容

安全排序异构集合。

项目描述

https://travis-ci.org/wolever/safesort.svg?branch=master

safesort 就像其名称所表示的那样:保证在 Python 2 和 Python 3 中对任意异构列表进行安全排序

>>> list(sorted(["a", 1, None]))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unorderable types: int() < str()
>>> list(safesort(["a", 1, None))
[None, 1, 'a']

对每个比较尝试三个排序键

  1. 对象: objA > objB

  2. 类型和对象: (type(objA).__mro__, objA) > (type(objB).__mro__, objB)

  3. 类型和标识符: (type(objA).__mro__, id(objA)) > (type(objB).__mro__, id(objB))

这保证了总排序是一致的

  1. 尽可能一致

  2. 普遍合理:类型相似的对象将放在一起

例如

>>> from safesort import safesort
>>> input = ['a', set([]), [], {}, 1, None]
>>> list(safesort(input))
[None, 1, {}, [], set([]), 'a']

安装

safesort 可以使用 Python 2 或 Python 3 通过 pipeasy_install 安装

$ pip install safesort
- OR -
$ easy_install safesort

由以下支持