用于模糊匹配的Python哈希表

时间:2012-11-28 12:24:22

标签: python dictionary hashtable

我正在尝试实现一种允许基于密钥快速查找的数据结构。

当我的查找涉及平等时,python dict很棒 (例如key == somevalue会转换为datadict[somevalue]

问题在于我还需要能够根据更复杂的比较来有效地查找密钥,例如: key > 50key.startswith('abc')

显然我不能在两种情况下使用相同的解决方案,但目前我无法弄清楚如何解决这两种情况。任何人都可以提出这样做​​的方法吗?

2 个答案:

答案 0 :(得分:4)

这听起来不像你想要一个哈希算法 - 而是某种形式的二叉树。甚至是您使用bisect模块的列表。值得一看:Python's standard library - is there a module for balanced binary tree?

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

答案 1 :(得分:3)

  • 将所有数据项放在列表中。
  • 对密钥进行排序。
  • 使用binary search有效查找key > 50key.startswith('abc')所在的项目。

当然,如果你有非常多的数据项,这只会得到回报。如果没有那么多,只需循环遍历列表并将条件应用于每个键。