False and 0 in the same dictionary
brian at thebdbulls.com
Tue Nov 4 22:42:26 CET 2008
On Nov 4, 4:21 pm, Prateek <sure... at gmail.com> wrote:
> On Nov 5, 1:52 am, Duncan Booth <duncan.bo... at invalid.invalid> wrote:
> > Prateek <sure... at gmail.com> wrote:
> > > I've been using Python for a while (4 years) so I feel like a moron
> > > writing this post because I think I should know the answer to this
> > > question:
> > > How do I make a dictionary which has distinct key-value pairs for 0,
> > > False, 1 and True.
> > How about using (x, type(x)) as the key instead of just x?
> Yup. I thought of that. Although it seems kinda unpythonic to do so.
> Especially since the dictionary is basically a cache mostly containing
> strings. Adding all the memory overhead for the extra tuples seems
> like a waste just for those four keys.
> Is there a better way?
> I also thought of using a custom __eq__ method in a custom class
> which extends the dict type but decided that was even worse.
Hmm, my original reply didn't show up.
I'm curious as to what you're trying to accomplish.
Bear in mind that I type this response not knowing your application.
While Python is not a statically typed language, 0 and False are
essentially different types (int and bool). Storing them both as keys
of a dictionary just doesn't seem like a good design.
More information about the Python-list