https://github.com/grantjenks/python-sortedcontainers
https://grantjenks.com/docs/sortedcontainers/ 官网文档
https://grantjenks.com/docs/sortedcontainers/performance.html 有一个好的基准测试的性能比较用起来让人放心,sortedcontainers与其他库比较各方面性能都比较优秀
>>> from sortedcontainers import SortedList
>>> sl = SortedList(['e', 'a', 'c', 'd', 'b'])
>>> sl
SortedList(['a', 'b', 'c', 'd', 'e'])
>>> sl *= 10_000_000
>>> sl.count('c')
10000000
>>> sl[-3:]
['e', 'e', 'e']
>>> from sortedcontainers import SortedDict
>>> sd = SortedDict({'c': -3, 'a': 1, 'b': 2})
>>> sd
SortedDict({'a': 1, 'b': 2, 'c': -3})
>>> sd.popitem(index=-1)
('c', -3)
>>> from sortedcontainers import SortedSet
>>> ss = SortedSet('abracadabra')
>>> ss
SortedSet(['a', 'b', 'c', 'd', 'r'])
>>> ss.bisect_left('c')
2
特征
- 纯Python
- 完全记录
- 基准比较(替代方案、运行时间、负载因子)
- 100% 测试覆盖率
- 压力测试时间
- 性能很重要(通常比 C 实现更快)
- 兼容的 API(与旧的 blist 和 bintrees 模块几乎相同)
- 功能丰富(例如,获取已排序字典中最大的五个键:d.keys()[-5:])
- 实用设计(例如 SortedSet 是一个带有 SortedList 索引的 Python 集)
- 基于 Python 3.10 开发
- 使用 CPython 3.7、3.8、3.9、3.10 和 PyPy3 进行测试
- 在 Linux、Mac OSX 和 Windows 上测试