[Tutor] fine in interpreter, hangs in batch
Kent Johnson
kent37 at tds.net
Mon Mar 19 19:03:03 CET 2007
Switanek, Nick wrote:
> Great, Kent, thanks. I thought that I had to check in the .keys() to see
> if the key was there.
>
> It seems that the method you suggest will not work if I'm looking for a
> value in the dictionary. If that's correct, is there a fast alternative
> to searching through .values()
Not directly. If you only need to search by values (not keys) consider
if you can reverse the keys and values. (This probably won't work if you
can have many keys with the same value.)
Alternately, maintain a set of values in parallel with the dictionary.
If there are a lot of places where you need to do this, maybe you want
to make a dict subclass that manages a helper set. A good place to start
might be this recipe:
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/438823
It doesn't do what you want but it is similar and shows which dict
methods must be overridden.
Hmm, deleting entries could be tricky, you don't know whether to delete
from the helper. Maybe keep a dict that maps values to a count of how
many times the value appears in the main dict.
Kent
More information about the Tutor
mailing list