Most efficient solution?

phawkins at connact.com phawkins at connact.com
Fri Jul 20 16:06:01 EDT 2001


>>>>> "TR" == Terry Reedy <tjreedy at home.com> writes:

>> C = {}
>> for item in B:
>> C[item]=None

TR> This sort of makes me wish we had dict comprehensions to match list
TR> comprehensions:

TR> C = {item:None for item in B}
TR> or
TR> C = {item:1  for item in B}
TR> as revised and then discarded


So what's wrong with list comprehensions?  Observe, grasshopper:

Python 2.0 (#8, Oct 16 2000, 17:27:58) [MSC 32 bit (Intel)] on win32
Type "copyright", "credits" or "license" for more information.

import time

a = [str(i) for i in range(7500)]
b = [str(i) for i in range(0, 7500 * 5, 5)]
c = {}

for item in b:
	c[item] = 1

def dict(a,c):
	start = time.clock()
	for item in a:
		d = filter(c.has_key, a)
	stend = time.clock()
	print "get: %6.2f"%(stend-start)

def comp(a,b):
	start = time.clock()
	out = [i for i in a if i not in b]
	stend = time.clock()
	print "get: %6.2f"%(stend-start)


>>> >>> >>> ... ... >>> ... ... ... ... ... ... >>> ... ... ... ... ... >>> ... ... ... ... ... ... ... >>> >>> 
>>> 
>>> 
>>> comp(a,b)
get:  19.78
>>> dict(a,c)
get: 154.77
>>> 
-- 
Patricia J. Hawkins
Hawkins Internet Applications, LLC








More information about the Python-list mailing list