如何将python词典存储在pytables中?

时间:2012-01-25 12:06:33

标签: python dictionary pytables

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()函数导致整个字典被加载到内存中,这本身并不是必需的。有更好的方法吗?

1 个答案:

答案 0 :(得分:5)

您可以要求PyTables在表格内搜索,并在键列上创建一个索引以加快速度。

创建索引:

table.cols.key.createIndex()

查询key等于变量search_key的值:

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

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