python和快速查找树,其中节点具有多个属性和值

时间:2013-03-07 08:57:13

标签: python tree hashtable binary-tree binary-search-tree

我需要python中的树对象非常快。查找速度比内存更重要。叶节点是我想要的值。 因此,如果给定state = NY,postion = 3,hourOfDay = 2和dayOfWeek = 3,我需要以速度获得值= 100。带*的节点是叶节点。

0) root
    1) {state: [NY,LA]}
        2) {howOfDay:[1,2,3,4,5], postion:[1,2,3]}
                             *3) {dayOfWeek:[234]} => value:100
            4) {state: [FL,NV,……rest of the states]}
                5) {howOfDay:[1,6,7,8,9….23]}
                      *6) {dayOfWeek:[1,5,6,7]} => value:120

在我的数据库中,我的数据看起来像这样,属性为json对象。

parent child attribute value

0 1 state NY,LA
1 2 {howOfDay:[1,2,3,4,5], postion:[1,2,3]}
2 3 dayOfWeek dayOfWeek [2,3,4] 100
0 3 state  [FL,NV,……rest of the states]
4 5 howOfDay:[1,6,7,8,9….23]
5 6 dayOfWeek:[1,5,6,7] 120

那么,我应该使用什么python库和树结构来最好地找到一个值?如何将数据转换为最佳快速查找?

1 个答案:

答案 0 :(得分:4)

如果您重视内存速度,可以使用tuple(state, position, hourOfDay, dayOfWeed)作为关键字将所有数据放入字典中。

data = dict()

现在,对于每个离开节点,将数据插入字典:

data[state, position, hourOfDay, dayOfWeed] = value

然后使用

访问数据
value = data[state, position, hourOfDay, dayOfWeed]

这比任何树遍历都要快,因为它使用哈希字典的底层优化CPython实现。