[Tutor] Performance difference, ``in'' vs ``has_key()''

Andreas Kostyrka andreas at kostyrka.org
Mon Jul 18 01:52:31 CEST 2005


A short trial with timeit.py shows that

k in d is faster than d.has_key(k)

k in d is about as fast as hk(d), where hk = d.has_key

So it seems both expressions are about the same, but the expression
dict.has_key involves an additional dictionary lookup to fetch has_key.

Andreas

Am Sonntag, den 17.07.2005, 11:18 -0700 schrieb Bill Campbell:
> I'm going to be doing some work where I'll be doing existence
> testings on keys on about a million records where it may require
> multiple passes so I'm a bit concerned about the timing of these
> tests.
> 
> Is there any significant performance difference between the
> tests, ``key in dictionary'' and ``dictionary.has_key(key)''?
> I would prefer using the ``key in'' because it's a bit easier to
> type, and can also be used with lists in addition to dictionaries.
> 
> A related question is where's the trade-off between using ``in''
> with a list, and a dictionary?  I presume that using it with
> small hashes will be faster than dictionries since it doesn't
> have to calculate the hashes.
> 
> Bill
> --
> INTERNET:   bill at Celestial.COM  Bill Campbell; Celestial Software LLC
> UUCP:               camco!bill  PO Box 820; 6641 E. Mercer Way
> FAX:            (206) 232-9186  Mercer Island, WA 98040-0820; (206) 236-1676
> URL: http://www.celestial.com/
> 
> Government is the great fiction, through which everbody endeavors to
> live at the expense of everybody else.  -- Frederic Bastiat
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Dies ist ein digital signierter Nachrichtenteil
Url : http://mail.python.org/pipermail/tutor/attachments/20050718/36577295/attachment.pgp


More information about the Tutor mailing list