Python字典对象永久按值排序。
项目描述
跳转字典是一个永久按值排序的Python字典。此软件包提供了一个由C编写且具有广泛测试套件的快速、惯用实现。
该数据结构在内部使用跳表。
一个示例用法是排行榜,其中跳转字典提供了对每个用户的分数和排名的对数访问,以及从任何节点向任一方向的效率迭代。
与Python 2.7+和Python 3.3+兼容。
用法
跳转字典的工作方式与正常字典相同,但它仅映射到浮点值。
from skipdict import SkipDict skipdict = SkipDict(maxlevel=4) skipdict['foo'] = 1.0 skipdict['bar'] = 2.0
SkipDict 可以选择接受一个字典或一系列 (key, value) 对。
skipdict = SkipDict({'foo': 1.0, 'bar': 2.0}) skipdict = SkipDict(('foo', 1.0), ('bar', 1.0), ('bar', 1.0))
请注意,重复项会自动汇总为总和。为了说明这一点,我们可以计算文本中字母的出现次数
skipdict = SkipDict( (char, 1) for char in "Everything popular is wrong. - Oscar Wilde" ) # The most frequent letter is a space. skipdict.keys()[-1] == " "
跳转字典按值排序,这意味着迭代和标准映射协议方法(如 keys()、values() 和 items())按排序顺序返回项。
这些方法都扩展了可选的范围参数 min 和 max,它们基于值限制迭代。此外,迭代器对象支持项和切片协议
>>> skipdict.keys(min=2.0)[0] 'bar' >>> skipdict.keys(max=2.0)[1:] ['bar']
请注意,这些方法始终返回一个迭代器。使用 list 将其扩展为序列
>>> iterator = skipdict.keys() >>> list(iterator) ['bar']
index(value) 方法返回第一个具有确切所需值的键。如果找不到该值,则引发 KeyError 异常。
>>> skipdict.index(2.0) 'bar'
替代方案
Francesco Romani 编写了 pyskiplist,它还提供了 CPython 中跳表数据结构的实现。
Paul Colomiets 编写了 sortedsets,这是一个纯 Python 实现的库。随机测试用例来自这个包。
许可证
版权(c)204 年 Malthe Borch <mborch@gmail.com>
本软件在 BSD 许可证下提供“原样”。
变更
1.0 (2014-09-26)
初始公开发布。
项目详情
关闭
skipdict-1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 82f90eae2919b305628b6a607b36c7458aef5e3210d1bf836f9bca0eec63d016 |
|
MD5 | 3375301e88d2c42e30a32dbe89e9e270 |
|
BLAKE2b-256 | c476dc38b95a8fc89f4d8a8fd06e73f347ef2247b07cbcd3a0395248f5b9bf59 |