I meant the default implementation for 'in' which simply iterates over the collection. While 'in' can be implemented efficiently using the dict lookup for keys() and items(), for values() this doesn't work -- if you want to know if a particular value is in dict.values(), you have to iterate over the entire dict until you find it. (I had dreams of caching this by converting the values to a set, but was rudely awakened when I realized that values don't need to be hashable. So dict.values(), unlike dict.keys() and dict.items(), cannot return an object that behaves and is as efficient as a set, without copying anything; the only property I plan to implement (and have already done so) is __iter__ which gives all the values in random order.
--Guido On 2/10/07, Brett Cannon <[EMAIL PROTECTED]> wrote: > On 2/10/07, guido.van.rossum <[email protected]> wrote: > > Author: guido.van.rossum > > Date: Sat Feb 10 19:55:06 2007 > > New Revision: 53724 > > > > Modified: > > python/branches/p3yk/Lib/test/test_dictviews.py > > python/branches/p3yk/Objects/dictobject.c > > Log: > > Implement __contains__ for dict_keys and dict_items. > > (Not for dict_values, where it can't be done faster than > > the default implementation which just iterates the elements.) > > What default implementation? I assume you don't mean the default way > for dicts since you are already using that for keys and items. > > -Brett > _______________________________________________ > Python-3000-checkins mailing list > [email protected] > http://mail.python.org/mailman/listinfo/python-3000-checkins > -- --Guido van Rossum (home page: http://www.python.org/~guido/) _______________________________________________ Python-3000-checkins mailing list [email protected] http://mail.python.org/mailman/listinfo/python-3000-checkins
