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()

要查询key等于变量的值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 回答