处理或提高Python异常是否有效?

时间:2014-07-24 02:59:49

标签: python dictionary exception-handling

最近我一直在使用一些大字典(大意思是〜成千上万的元素)所以我一直在雇用这个小家伙:

try:
    dict[key]
    #do something
except KeyError:
    pass

取代

if key in dict.keys()
    #do something

我想知道哪个词典大小前者比后者更有效?根据我的理解,如果keys()很小,第二种方法会更快,但在什么时候使用第一种方法会变得更好?

1 个答案:

答案 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中查找。