最近我一直在使用一些大字典(大意思是〜成千上万的元素)所以我一直在雇用这个小家伙:
try:
dict[key]
#do something
except KeyError:
pass
取代
if key in dict.keys()
#do something
我想知道哪个词典大小前者比后者更有效?根据我的理解,如果keys()
很小,第二种方法会更快,但在什么时候使用第一种方法会变得更好?
答案 0 :(得分:4)
当你这样做时
if key in dict.keys():
Python 2.x必须进行O(N)比较,以查找key
中是否dict
,因为dict.keys()
返回键列表。 (但在Python 3.x中这很好,因为它返回一个类似于集合的视图对象,查找会更快)
相反,请使用像这样的常量时间查找
if key in dict:
这将计算key
的哈希值并在dict
中查找。