deprecation of has_key?

Steven Bethard steven.bethard at gmail.com
Thu Apr 21 10:50:25 EDT 2005


Denis S. Otkidach wrote:
> I believe it's a bad idea to remove this method, since behavior of both
> "item in dict" and "for item in dict" (especially the later) in Python
> does't seem sane to me.  Just look at reverse operations:
> 
> dict.fromkeys(seq) <-> d.keys(), d.iterkeys() - OK
> dict(iterable) <-> d.iteritems()              - why not iter(d)?
> dict(l) <-> d.items()                         - why not list(d)?
> dict(seq) <-> d.keys(), d.iterkeys()          - looks very strange.
> 
> And those ("item in dict" and "for item in dict") are related of course,
> since the following should pass:
> 
> for item in d:
>     assert item in d
> 
> That's the reason why I always prefer to use has_key() and iteritems()
> to in and iter().

Huh?  I'm not following your logic.  Why is "item in dict" less readable 
than "dict.has_key(item)"?  Something to do with expecting inverses that 
don't exist?

Personally, I use "item in dict" because it's quite readable to me, and 
generally faster.

STeVe



More information about the Python-list mailing list