繁体   English   中英

如何在python中以log(n)访问时间存储排序的记录?

[英]How to store sorted records in python, with log (n) access time?

我需要存储以升序排列的记录,并具有log(n)访问时间。 我来自C ++背景,如果必须使用C ++,我会去std::map内部实现红黑树的地方。 这保证了记录始终以键的升序存储,并且还保证了log(n)访问时间。 但是在Python3.5中执行此操作的最佳方法是什么?

解决此问题的一种方法是使用bintrees库,但是是否有专用的库来存储排序的记录?

您可以使用sortedContainers ,它可以让您维护始终排序的数据结构(列表,字典,dictWithKeys,集合)。

您可以使用安装
pip install sortedcontainers

这是一个简单的例子

import sortedcontainers
g = {'B': ['A', 'C'],
     'C': ['D'],
    'A': ['B', 'C'],
     'D': [],
     }

l = sortedcontainers.SortedDict(g)

>>> l
SortedDict(None, 1000, {'A': ['B', 'C'], 'B': ['A', 'C'], 'C': ['D'], 'D': []})
>>> l['G']=['A','B']
>>> l
SortedDict(None, 1000, {'A': ['B', 'C'], 'B': ['A', 'C'], 'C': ['D'], 'D': [], 'G': ['A', 'B']})
>>> l['E']=['C','D','G']
>>> l
SortedDict(None, 1000, {'A': ['B', 'C'], 'B': ['A', 'C'], 'C': ['D'], 'D': [], 'E': ['C', 'D', 'G'], 'G': ['A', 'B']})
>>> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM