按插入顺序编入索引的字典。
indexed.p的Python项目详细描述
简介
indexed.IndexedOrderedDict与 collections.OrderedDict,可作为替换项使用。 主要区别在于键、值和项视图支持访问 元素的索引。
d = indexed.IndexedOrderedDict() d["first-key"] = "first-value" d["second-key"] = "second-value" d["third-key"] = "third-value" values = d.values() assert values[2] == "third-value" assert d.keys().index("second-key") == 1
功能
- 可与Python2和3一起使用。提供keysview(), valuesview()和itemsview(),已从python 3中删除 兼容性。
- 按索引访问键、值和项,例如d.keys()[5]。
- 查找键的索引,例如d.keys().index("key")。
不包括这些附加的api与 collections.OrderedDict()。包括:
- 初始化、设置、获取和删除项目
- 向前和反向迭代
- d.clear()
- d.popitem(last=True)
- d.move_to_end(key, last=True)
- d.keys(),d.values(),d.items()
- d.pop(key[, default])
- d.setdefault(key, default=None)
- 字符串表示法
- 酸洗
- 复制
- 从键创建
- 与其他有序词典或顺序敏感地比较顺序 与标准映射无关
安装
唯一的依赖项是python>;=2.7或python>;=3.0。
使用pip:
sudo pip install indexed.py
使用简易安装:
sudo easy_install indexed.py
来自当前源代码:
python setup.py build sudo python setup.py install
性能
性能实际上与内置 collections.OrderedDict。
d | ^{tt2}$ | ^{tt1}$ | ||
---|---|---|---|---|
Operation | Avergage | Worst case | Average | Worst case |
d.copy() | O(n) | O(n) | O(n) | O(n) |
d[key] | O(1) | O(n) | O(1) | O(n) |
d[key] = value | O(1) | O(n) [1] | O(1) | O(n) [1] |
del d[key] | O(1) | O(n) | O(n) | O(n) |
d.keys()[i] | O(n) [2] | O(n) [2] | O(1) | O(1) |
d.values()[i] | O(n) [3] | O(n) [3] | O(1) | O(n) |
d.items()[i] | O(n) [3] | O(n) [3] | O(1) | O(n) |
d.keys().index(x) | O(n) [3] | O(n) [3] | O(n) | O(n) |
[1] | (1, 2) These are amortized worst case runtimes. |
[2] | (1, 2) This does not work in Python 3 because ^{tt20}$ is not indexable. One of the theoretically best work arounds is ^{tt21}$. |
[3] | (1, 2, 3, 4, 5, 6) Assuming the theoretically best possible workaround. |
许可证
index.py是根据GPL3授权的。查看许可文件以获取完整的版权 以及许可证信息。