0

Python で非常に高速なツリー オブジェクトが必要です。検索の速度は、メモリよりも重要です。葉ノードは、私が望む値です。したがって、state=NY、position=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)メモリよりも速度を重視する場合は、 as キーを使用して、すべてのデータを辞書に入れることができます。

data = dict()

次に、Leave ノードごとに、データをディクショナリに挿入します。

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

次に、次を使用してデータにアクセスします

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

これは、ハッシュ化された辞書の基になる最適化された CPython 実装を使用するため、どのツリー トラバーサルよりも高速です。

于 2013-03-07T09:01:23.997 に答える