dictionary - (surprisingly) python dict "has_key" faster than "in" -
from popular information , searching on net+stackoverflow, seems "in" faster "has_key" key lookups in python dictionary. however, recent experience has been quite opposite , have no clue why so? consider code of following form:
for f in f:     if 'a' in f:         alist.append(f)         #if f in fdict.keys():         if fdict.has_key(f):             idx_alist.append(fdict[f])     elif 'b' in f:         blist.append(f)         #if f in fdict.keys():         if fdict.has_key(f):             idx_blist.append(fdict[f]) in above, switching "has_key" makes code 50000x times faster on small files. quite baffling -- know what's going on?
it's f in fdict, not f in fdict.keys(). using keys builds list of keys , goes through 1 one, whereas using f in fdict uses efficient hash-based lookup.
Comments
Post a Comment