我想實現一個數據結構,它允許基於密鑰的快速查找。Python哈希表模糊匹配
蟒蛇dict
是偉大的,當我的目光起坐涉及的平等
(如key == somevalue
轉化爲datadict[somevalue]
。
的問題是,我還需要基於更復雜,能夠有效地查找鍵相比之下,如key > 50
,或key.startswith('abc')
。
很明顯,我不能在這兩種情況下相同的解決方案,但在現階段,我無法弄清楚如何解決這兩種情況下,任何人都可以提出這樣的一種方式?
我想實現一個數據結構,它允許基於密鑰的快速查找。Python哈希表模糊匹配
蟒蛇dict
是偉大的,當我的目光起坐涉及的平等
(如key == somevalue
轉化爲datadict[somevalue]
。
的問題是,我還需要基於更復雜,能夠有效地查找鍵相比之下,如key > 50
,或key.startswith('abc')
。
很明顯,我不能在這兩種情況下相同的解決方案,但在現階段,我無法弄清楚如何解決這兩種情況下,任何人都可以提出這樣的一種方式?
它聽起來並不像你想要的哈希算法 - 而是某種形式的二叉樹。甚至是你使用bisect
模塊的列表。這將會是值得考慮的:Python's standard library - is there a module for balanced binary tree?
另一種選擇(取決於您的數據),是使用使用內存數據庫sqlite3
,創造儘可能查找合適的指數 - 但你換性能/內存和SQL語法的靈活性...
key > 50
或key.startswith('abc')
其中的項目。當然,如果你有非常多的數據項目,這隻會帶來好處。如果你沒有那麼多,只需遍歷列表並將你的條件應用於每個鍵。
我有很多項目,大量的插入和查詢發生在快速連續,所以每次排序列表不是真的一個選項。好的建議,但! – aquavitae
是的,這正是我想要的! sqite3爲我所需要的方式開銷很多,但是「二等分」,加上一個二叉搜索樹應該可以做到。 – aquavitae