类似于Python的boost::multi_index
我对C++中的boost::multi_index非常欣赏。其实我很想在Python中也用类似的东西,特别是用来处理一些数值计算密集型应用生成的数据。Python里有没有这样的东西呢?我只是想确认一下,如果没有的话,我就打算自己实现一个。以下这些东西我觉得不太合适:
把boost::multi_index封装到Python里,这样做根本不够灵活。
在内存中使用sqlite3,这样的做法太丑了。
2 个回答
2
因为Python的集合只存储对象的引用,而不是对象本身,所以一个集合用不同的索引方式和多个集合其实没什么区别。
举个例子,你可以有几个字典(dict),里面存放你的数据,每个字典用不同的键来引用这些数据。
1
关于你问的在Python中是否有类似的东西,我可以说没有。
Boost.MultiIndex的一个很有用的特点是,它可以直接修改里面的元素(通过replace()或modify())。而Python自带的字典(dict)没有这样的功能,它要求键是不可变的。我没有见过其他实现可以让键被修改。所以在这个特定的方面,Python没有类似Boost.MultiIndex的东西。
如果你只是需要对数据有多个静态的视图,那么我同意Radomir Dopieralski的看法。你可以把多个字典封装在你自己的类里,这样可以提供一个统一的接口,确保不同视图之间的数据同步。我不太明白你说的“性能感知转换”是什么意思,但如果你是在谈论插入或删除操作的计算复杂度,即使是Boost.MultiIndex,“向multi_index_container中插入一个元素也只是简单地结合每个索引上的基本插入操作,删除也是类似的。”