Larry Bates: > The only case where it would be faster would be if most of the keys were NOT > in > the dictionary (rather odd use case). Otherwise I believe you will find the > first way quicker as the exceptions are infrequent.
I have written a small benchmark: from random import shuffle def test1(data, to_delete): for item in to_delete: try: del data[item] except KeyError: pass def test2(data, to_delete): for item in to_delete: if item in data: del data[item] N = 1000000 M = 2 * N data = dict.fromkeys(xrange(N), 0) to_delete = range(M) shuffle(to_delete) from timeit import default_timer as clock t = clock() #test1(data, to_delete) # 2.4 s test2(data, to_delete) # 0.8 s print round(clock() - t, 2), "s" It creates a dictionary of the first million integers, and then tries to delete the first two million of integers. So about 1/2 numbers are present to be deleted. In this situation the version with the try- except seems about 3 times slower than the other. Bye, bearophile -- http://mail.python.org/mailman/listinfo/python-list