使用partial关键字搜索python dict的最快方法

Yum*_*Cao 15 python

确定dict是否包含以特定字符串开头的键的最快方法是什么?我们能做得比线性好吗?当我们只知道密钥的开头时,我们如何才能实现O(1)操作?

这是当前的解决方案:

for key in dict.keys():
    if key.start_with(str):
        return True
return False
Run Code Online (Sandbox Code Playgroud)

ars*_*jii 32

没有预处理字典,O(n)是你能做的最好的.但它并不复杂,但是:

any(key.startswith(mystr) for key in mydict)
Run Code Online (Sandbox Code Playgroud)

(不要使用dictstr作为变量名,这些已经是两个内置函数的名称.)

如果您可以预处理dict,请考虑将密钥放在前缀树(也称为trie)中.维基百科文章中甚至还有一个Python实现.