[英](surprisingly) python dict “has_key” faster than “in”
根据流行的信息以及在net + stackoverflow上进行搜索,似乎在Python字典中查找关键字时,“ in”比“ has_key”要快。 但是,我最近的经历恰恰相反,我不知道为什么会这样吗? 考虑以下形式的代码:
for f in F:
if 'A' in f:
AList.append(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])
在上面的代码中,切换到“ has_key”即使在很小的文件上也使代码快5万倍。 这真是令人莫名其妙-有人知道发生了什么吗?
f in FDICT.keys()
是f in FDICT
,而不是f in FDICT.keys()
。 使用keys
建立所有keys
的列表,并逐一遍历,而f in FDICT
使用基于哈希的高效查找。
if f in FDICT.keys()
因为您每次循环都在生成键列表。
尝试f in fDICT
其替换为f in fDICT
可能是因为您正在调用FDICT.keys():
它必须创建一个密钥列表。 您想要f in FDICT:
执行f in FDICT:
,其结果相同,但不需要生成密钥列表。
无论如何,我听说传统的优化方法是假设键在字典中,如果没有,就捕获KeyError
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.