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