<p>从流行的信息以及在net+stackoverflow上的搜索来看,在python字典中查找键时,“in”要比“has_key”快。然而,我最近的经历恰恰相反,我不知道为什么会这样?考虑以下形式的代码:</p>
<pre><code>for f in F:
if 'A' in f:
AList.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(f)
#if f in FDICT.keys():
if FDICT.has_key(f):
idx_AList.append(FDICT[f])
elif 'B' in f:
BList.append(f)
#if f in FDICT.keys():
if FDICT.has_key(f):
idx_BList.append(FDICT[f])
</code></pre>
<p>在上面的代码中,切换到“has_key”会使代码的速度提高5000倍,即使是在非常小的文件上。这很令人费解——有人知道发生了什么吗?在</p>
<p>这可能是因为您正在调用<code>FDICT.keys():</code>,它必须创建一个密钥列表。您希望执行<code>f in FDICT:</code>,它有相同的结果,但不需要生成密钥列表。在</p>
<p>在任何情况下,我听说传统的优化方法是假设密钥在dict中,如果不在dict中,只捕获{<cd3>}</p>