2012-01-25 9 views
7

pytablesはPython辞書をネイティブにサポートしていません。私はそれがフォームのデータ構造を作ることです近づいてきた道:python辞書をpytablesにどのように格納する必要がありますか?

tables_dict = { 
'key'   : tables.StringCol(itemsize=40), 
'value'  : tables.Int32Col(), 
} 

(私はキーが< 40文字の長さであることを確認することに注意してください)し、この構造を使用してテーブルを作成します。

その後、
file_handle.createTable('/', 'dictionary', tables_dict) 

とを移入:

file_handle.dictionary.append(dictionary.items()) 

としてデータを取り出す:

dict(file_handle.dictionary.read()) 

これは問題ありませんが、辞書を読み込むのは非常に遅いです。私は問題は、read()関数が辞書全体をメモリにロードさせていることであり、実際には必要ないはずではないと思います。これを行うより良い方法はありますか?

答えて

5

PyTablesにテーブル内の検索を依頼することができます。また、キー列にインデックスを作成して、インデックスを高速化することもできます。 keyが変数search_keyに等しい値を照会するには

table.cols.key.createIndex() 

:インデックスを作成するには

[row['value'] for row in table.where('key == search_key')] 

http://pytables.github.com/usersguide/optimization.html#searchoptim

関連する問題