用于模糊匹配的Python哈希表

用于模糊匹配的Python哈希表,python,dictionary,hashtable,Python,Dictionary,Hashtable,我正在尝试实现一种数据结构,它允许基于键进行快速查找 当我的查找涉及到一个等式时,pythondict非常棒 (例如,key==somevalue转换为datadict[somevalue]) 问题是,我还需要能够基于更复杂的比较高效地查找密钥,例如key>50,或key.startswith('abc') 显然,我不能在两种情况下都使用相同的解决方案,但目前我不知道如何解决这两种情况。有人能建议一种方法吗? 将所有数据项放入列表中 按键对列表排序 用于有效查找key>50或key.starts

我正在尝试实现一种数据结构,它允许基于键进行快速查找

当我的查找涉及到一个等式时,python
dict
非常棒
(例如,
key==somevalue
转换为
datadict[somevalue]

问题是,我还需要能够基于更复杂的比较高效地查找密钥,例如
key>50
,或
key.startswith('abc')

显然,我不能在两种情况下都使用相同的解决方案,但目前我不知道如何解决这两种情况。有人能建议一种方法吗?

  • 将所有数据项放入列表中
  • 按键对列表排序
  • 用于有效查找
    key>50
    key.startswith('abc')
    处的项目

当然,只有当你有很多数据项时,这才有回报。如果你没有那么多,只需循环列表并将你的条件应用于每个键。

听起来你并不想要一个哈希算法,而是某种形式的二叉树。甚至是一个使用
对分
模块的列表。它值得一看:


另一个选项(取决于您的数据),将使用内存中的
sqlite3
数据库,并为可能的查找创建适当的索引——但您将用性能/内存和SQL语法来换取灵活性…

是的,这正是我想要的!sqite3对于我需要的东西有很大的开销,但是
bisect
,再加上二进制搜索树应该可以做到这一点诀窍。我有很多项目,大量的插入和查询快速连续发生,所以每次对列表进行排序并不是一个真正的选项。不过这是一个很好的建议!