False and 0 in the same dictionary

bdbull brian at thebdbulls.com
Tue Nov 4 16:42:26 EST 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.
>
> Prateek

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 mailing list