类似于Python的boost :: multi_index

时间:2010-09-24 14:46:27

标签: c++ python data-structures boost

我已经开始在C ++中欣赏了很多boost :: multi_index。碰巧我很乐意在Python中使用类似的东西;用于处理来自数字密集型应用程序的数据的脚本。 Python有这样的东西吗?我只是想确定它不存在,然后我会尝试自己实现它。对我来说不会做的事情:

  • 在Python中包装boost :: multi_index。它根本无法扩展。

  • 在内存中使用sqlite3。这太丑了。

2 个答案:

答案 0 :(得分:2)

由于python集合只存储对象的引用,而不存储对象本身,因此在一个集合与多个索引方案之间并且只有多个集合之间没有太大区别。

例如,您可以对数据使用多个词条,每个词都使用不同的键来引用它们。

答案 1 :(得分:1)

为了回答你在Python中是否存在类似事物的问题,我会说不。

Boost.MultiIndex的一个有用功能是可以就地修改元素(通过replace()或modify())。 Python的本机字典不提供这样的功能,并且要求密钥是不可变的。我还没有看到其他允许更改密钥的实现。所以在这个特定领域,没有与Python中的Boost.MultiIndex类似的东西。

如果您只需要数据的多个静态视图,那么我会同意Radomir Dopieralski。您可以在自己的类中包装多个dicts,以提供统一的API以确保不同视图之间的同步。我不知道“性能感知转换”是什么意思,但如果你在谈论插入/删除操作的计算复杂性,即使使用Boost.MultiIndex,“将元素插入到multi_index_container中也会简化为一个简单的组合对每个索引进行基本插入操作,类似地删除。“