用于模糊匹配的Python哈希表
我正在尝试实现一种数据结构,它允许基于键进行快速查找 当我的查找涉及到一个等式时,python用于模糊匹配的Python哈希表,python,dictionary,hashtable,Python,Dictionary,Hashtable,我正在尝试实现一种数据结构,它允许基于键进行快速查找 当我的查找涉及到一个等式时,pythondict非常棒 (例如,key==somevalue转换为datadict[somevalue]) 问题是,我还需要能够基于更复杂的比较高效地查找密钥,例如key>50,或key.startswith('abc') 显然,我不能在两种情况下都使用相同的解决方案,但目前我不知道如何解决这两种情况。有人能建议一种方法吗? 将所有数据项放入列表中 按键对列表排序 用于有效查找key>50或key.starts
dict
非常棒(例如,
key==somevalue
转换为datadict[somevalue]
)
问题是,我还需要能够基于更复杂的比较高效地查找密钥,例如key>50
,或key.startswith('abc')
显然,我不能在两种情况下都使用相同的解决方案,但目前我不知道如何解决这两种情况。有人能建议一种方法吗?- 将所有数据项放入列表中
- 按键对列表排序
- 用于有效查找
或key>50
处的项目key.startswith('abc')
当然,只有当你有很多数据项时,这才有回报。如果你没有那么多,只需循环列表并将你的条件应用于每个键。听起来你并不想要一个哈希算法,而是某种形式的二叉树。甚至是一个使用
对分模块的列表。它值得一看:
另一个选项(取决于您的数据),将使用内存中的sqlite3
数据库,并为可能的查找创建适当的索引——但您将用性能/内存和SQL语法来换取灵活性…是的,这正是我想要的!sqite3对于我需要的东西有很大的开销,但是bisect
,再加上二进制搜索树应该可以做到这一点诀窍。我有很多项目,大量的插入和查询快速连续发生,所以每次对列表进行排序并不是一个真正的选项。不过这是一个很好的建议!