我想知道如何对python字典中的键执行某种索引。这本字典大约有几分。400,000项,所以我试图避免线性搜索。
基本上,我正在试图找出userinput是否在任何一个丁字键中。
for keys in dict:
    if userinput in keys:
        DoSomething()
        break这将是我试图做的一个例子。有没有一种更直接的搜索方式,没有循环?或者什么是更有效的方法。
澄清:userinput并不是真正的密钥(如userinput可能是log,而关键是logfile )
编辑:任何列表/缓存创建,预处理或组织,可以在搜索之前完成是可以接受的。唯一需要快速的是寻找钥匙。
发布于 2011-03-03 15:06:16
您可以使用适当的分隔符将所有键连接到一个长字符串中,并使用字符串的find方法。太快了。
也许这段代码对你有帮助。search方法返回一个字典值列表,其键包含子字符串key。
class DictLookupBySubstr(object):
    def __init__(self, dictionary, separator='\n'):
        self.dic = dictionary
        self.sep = separator
        self.txt = separator.join(dictionary.keys())+separator
    def search(self, key):
        res = []
        i = self.txt.find(key)
        while i >= 0:
            left = self.txt.rfind(self.sep, 0, i) + 1
            right = self.txt.find(self.sep, i)
            dic_key = self.txt[left:right]
            res.append(self.dic[dic_key])
            i = self.txt.find(key, right+1)
        return reshttps://stackoverflow.com/questions/5174506
复制相似问题