2010-09-24 86 views
5

我已經開始欣賞很多boost :: multi_index的C++。碰巧,我會很樂意在Python中使用類似的東西;用於處理來自數字密集型應用程序的數據的腳本。 Python有這樣的東西嗎?我只是想確定它不存在,然後我會嘗試自己實現它。事情不會爲我做:類似boost :: multi_index的Python

  • 在Python中包裝boost :: multi_index。它根本不會縮放。

  • 在內存中使用sqlite3。這是醜陋的。

+0

這個答案有點相關:http://stackoverflow.com/questions/3070598/is-there-an-equivalent-of-boostmulti-index-for-java-someplace/3642996#3642996 – Gunslinger47 2010-09-24 16:08:05

+0

一個實現是在https://stackoverflow.com/a/2296976/3142913 – 2017-12-24 21:40:02

回答

1

要回答你是否存在類似的東西在Python中的問題,我會說不。

Boost.MultiIndex的一個有用的功能是可以在原地修改元素(通過replace()或modify())。 Python的本地字典不提供這樣的功能,並要求密鑰是不可變的。我還沒有看到其他實現允許更改密鑰。所以在這個特定領域,Python中沒有像Boost.MultiIndex那樣的東西。

如果您只需要多個靜態數據視圖,那麼我會同意Radomir Dopieralski。您可以在自己的類中包裝多個字典以提供統一的API,以確保不同視圖之間的同步。我不知道「性能感知轉換」是什麼意思,但是如果您正在談論插入/刪除操作的計算複雜性,即使使用Boost.MultiIndex,「將元素插入到multi_index_container中也可以簡化爲對每個索引進行基本插入操作,並且類似地刪除。「

+0

是的,一年和所以在提出這個問題之後,我懷疑這一點。不過,我也瞭解到,python支持的數據庫動物園中有足夠的多樣性,其中一個可能實際上解決了這個問題。 – dsign 2012-01-30 14:12:45

2

因爲Python集合只存儲對象的引用,而不是對象本身,孤單是不是有一個收集與多個索引方案,並且僅僅有多個集合太大的區別。

例如,您可以對您的數據有幾個字典,每個字母都使用不同的鍵來引用它們。

+1

Yeap,但是這留下了很多重要問題:在修改ops,迭代器投影,性能感知轉換之間的不同索引之間的同步... – dsign 2010-09-25 13:00:14

相關問題