如何在python中存储已排序的记录,并具有log(n)访问时间?

时间:2017-03-31 22:13:27

标签: python python-3.x

我需要存储按升序排列的记录,并具有log(n)访问时间。我来自C ++背景,如果我不得不使用C ++,我会去std::map内部实现红黑树。这样可以保证记录始终按密钥的升序存储,并保证log(n)访问时间。但是在Python3.5中最好的方法是什么?

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

1 个答案:

答案 0 :(得分:1)

您可以使用sortedContainers来保持始终排序的数据结构(list,dict,dictWithKeys,set)。

您可以使用
安装 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']})
>>>