阅读Michael Driscoll的《Python 101》时,我看到他对检查字典中键是否存在的解释。我在自己的机器上使用了一个包含键“a”到“z”的字典,其中值是它们的顺序,并使用一个测量检索键“t”(随机选择)时间的函数来检查它。
这是我的函数:
这是我的函数:
def f(d, flag):
start_time = time.time()
if flag:
print("t" in d)
else:
print("t" in d.keys())
print("--- %s seconds ---" % (time.time() - start_time))
以下是结果:
>>> f(dict,True)
True
--- 0.03937530517578125 seconds ---
>>> f(dict,False)
True
--- 0.05114388465881348 seconds ---
但是,我还是不理解。我认为key in dict.keys()
会在迭代更小的集合上进行,这样会更快。是不是in
或keys()
的实现有什么特殊之处导致了这种情况?
dict.keys()
会测试一个更小的集合?那个集合不包括key in dict
会包括什么? - Martijn Pieters