我需要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库和树结构来最好地找到一个值?如何将数据转换为最佳快速查找?
答案 0 :(得分:4)
如果您重视内存速度,可以使用tuple(state, position, hourOfDay, dayOfWeed)
作为关键字将所有数据放入字典中。
data = dict()
现在,对于每个离开节点,将数据插入字典:
data[state, position, hourOfDay, dayOfWeed] = value
然后使用
访问数据value = data[state, position, hourOfDay, dayOfWeed]
这比任何树遍历都要快,因为它使用哈希字典的底层优化CPython实现。