0

我需要一个非常快的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 库和树结构来最好地找到一个值?如何将数据转换为最好的快速查找?

4

1 回答 1

5

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

data = dict()

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

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

然后,您使用

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

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

于 2013-03-07T09:01:23.997 回答