9

pytables は Python 辞書をネイティブにサポートしていません。私がアプローチした方法は、次の形式のデータ構造を作成することです。

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()、これは実際には必要ではありません。これを行うより良い方法はありますか?

4

1 に答える 1

5

テーブル内を検索するように PyTables に依頼し、キー列にインデックスを作成して高速化することもできます。

索引を作成するには:

table.cols.key.createIndex()

keyvariable と等しい値を照会するには、次のようにしますsearch_key

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

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

于 2012-01-25T15:14:21.010 に答える