如何在pytables中存储Python字典?

9 投票
1 回答
3871 浏览
提问于 2025-04-17 11:03

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 个回答

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

撰写回答