我需要存储按升序排列的记录,并具有log(n)
访问时间。我来自C ++背景,如果我不得不使用C ++,我会去std::map
内部实现红黑树。这样可以保证记录始终按密钥的升序存储,并保证log(n)
访问时间。但是在Python3.5中最好的方法是什么?
解决此问题的一种方法是使用bintrees
库,但是是否有专门的库来存储已排序的记录?
答案 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']})
>>>