我有一个班有2个变量成员:
class A:
fullname = ""
email = ""
有一个存储在内存中的A列表,现在我需要搜索全名或电子邮件,搜索需要支持模糊搜索(组装SQL'如'子句),例如搜索“abc”,用于“dabcd” “它应该匹配(如果它可以显示完全匹配,那么它会更好)。
我想我应该在'fullname'和'email'上建立索引?
请建议,谢谢!
编辑:如果我只需要完全匹配,那么两个带有“全名”和“电子邮件”的词典是关键是最佳选择吗?我看到一些文章说取物是O(1)。第二次编辑:我定义的'最佳'是针对搜索速度(最佳速度)。正如我在python中所认为的,引用只会被存储为字典中的指针,因此空间分配不应成为问题。我有成千上万的记录。
答案 0 :(得分:3)
查看sqlite3
模块。您可以将数据放入内存数据库,对其进行索引,然后使用标准SQL进行查询。
答案 1 :(得分:2)
如果我只需要完全匹配,那么两个带有“全名”和“电子邮件”的词典是关键是最佳选择吗?
如果“最佳”是指“最佳速度”,那么是。
我看到一些文章说取物是O(1)。
这是正确的。
两个词典会很快。
如果你想要“喜欢”子句的行为,那没关系。大多数结构同样慢。字典将起作用,并且速度相当快。但是,列表的速度大致相同。
def find_using_like( some_partial_key, dictionary ):
for k in dictionary:
if some_partial_key in key:
return dictionary[k]