Python搜索:如何高效地完成它

时间:2011-01-06 02:11:23

标签: python

我有一个班有2个变量成员:

class A:
    fullname = ""
    email = ""

有一个存储在内存中的A列表,现在我需要搜索全名或电子邮件,搜索需要支持模糊搜索(组装SQL'如'子句),例如搜索“abc”,用于“dabcd” “它应该匹配(如果它可以显示完全匹配,那么它会更好)。

我想我应该在'fullname'和'email'上建立索引?

请建议,谢谢!

编辑:如果我只需要完全匹配,那么两个带有“全名”和“电子邮件”的词典是关键是最佳选择吗?我看到一些文章说取物是O(1)。

第二次编辑:我定义的'最佳'是针对搜索速度(最佳速度)。正如我在python中所认为的,引用只会被存储为字典中的指针,因此空间分配不应成为问题。我有成千上万的记录。

2 个答案:

答案 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]