Python搜索:如何高效地进行搜索

Python搜索:如何高效地进行搜索,python,Python,我有一个类,有两个可变成员: class A: fullname = "" email = "" 有一个存储在内存中的列表,现在我需要搜索全名或电子邮件,搜索需要支持模糊搜索(汇编SQL'like'子句),例如搜索“abc”,搜索“dabcd”,它应该匹配(如果它能首先显示精确匹配,它会更好) 我想我应该在“全名”和“电子邮件”上建立索引 请推荐,谢谢 编辑:如果我只需要精确匹配,两个以“全名”和“电子邮件”为键的字典是否是最佳选择?我看到一些文章说取数是O(1) 第二次编辑:

我有一个类,有两个可变成员:

class A:
    fullname = ""
    email = ""
有一个存储在内存中的列表,现在我需要搜索全名或电子邮件,搜索需要支持模糊搜索(汇编SQL'like'子句),例如搜索“abc”,搜索“dabcd”,它应该匹配(如果它能首先显示精确匹配,它会更好)

我想我应该在“全名”和“电子邮件”上建立索引

请推荐,谢谢

编辑:如果我只需要精确匹配,两个以“全名”和“电子邮件”为键的字典是否是最佳选择?我看到一些文章说取数是O(1)


第二次编辑:我定义的“最佳”是搜索速度(最佳速度)。我认为在python中,引用只会作为指针存储到字典中,因此空间分配应该不是问题。我有数千条记录。

看看
sqlite3
模块。您可以将数据放入内存中的数据库,对其进行索引,并使用标准SQL进行查询

如果我只需要精确匹配,那么两本以“全名”和“电子邮件”为键的词典是最佳选择吗

如果“最佳”是指“最佳速度”,那么是的

我看到一些文章说取数是O(1)

没错

两本字典就快了


如果您想要“like”子句行为,这并不重要。大多数结构都同样缓慢。一本字典会起作用,而且速度相当快。然而,列表的速度将大致相同

def find_using_like( some_partial_key, dictionary ):
    for  k in dictionary:
        if some_partial_key in key:
            return dictionary[k]

您希望有多少条记录?已更新,请检查。如果我需要模糊搜索,你有什么建议吗?@陈斌:请说明你认为“模糊”是什么意思。我什么都可以说。您的示例本质上是键字符串的“contains”。这就是你所说的“模糊”吗?包含?是的,这就是我的意思。我认为这是SQL语言中的“like”关键字。@陈斌:请更新问题以包含所有事实。