我正在尝试实现一种允许基于密钥快速查找的数据结构。
当我的查找涉及平等时,python dict
很棒
(例如key == somevalue
会转换为datadict[somevalue]
。
问题在于我还需要能够根据更复杂的比较来有效地查找密钥,例如: key > 50
或key.startswith('abc')
。
显然我不能在两种情况下使用相同的解决方案,但目前我无法弄清楚如何解决这两种情况。任何人都可以提出这样做的方法吗?
答案 0 :(得分:4)
这听起来不像你想要一个哈希算法 - 而是某种形式的二叉树。甚至是您使用bisect
模块的列表。值得一看:Python's standard library - is there a module for balanced binary tree?
另一个选项(取决于您的数据)将使用内存中的sqlite3
数据库并为可能的查找创建适当的索引 - 但您将交换性能/内存和SQL语法以获得灵活性。 ..
答案 1 :(得分:3)
key > 50
或key.startswith('abc')
所在的项目。当然,如果你有非常多的数据项,这只会得到回报。如果没有那么多,只需循环遍历列表并将条件应用于每个键。