I'm interested in knowing when (id(x), x) would be preferable over (type(x), x).
On Mon, 2020-12-21 at 17:52 +0000, David Mertz wrote: > On Mon, Dec 21, 2020 at 5:27 PM Christopher Barker > <[email protected]> wrote: > > Surely what you're looking for is some kind of typed hash table? > > > > Maybe, maybe not. My impression is that the Typed hash table is a > > kluge to get around this one issue. As others have pointed out, 1 > > and 1.0 are considered equal, and thus hash the same — a typed > > hash table would not consider them the same. And while maybe > > useful, it would violate the spirit of duck typing. If you really > > want that kind of static typing, maybe Python is not the language > > for the job. > > > > > I've occasionally wanted an "identity set". Except, after I want it, > I pretty quickly always realize I don't actually want it. Exactly > what strings and integers will actually be interned, etc? There's a > lot of implementation dependent stuff there that isn't a clear > semantics (I mean, it's knowable, but too complex). > > In any case, I know how to write that in a few lines if I feel like > having it. Basically just use pairs `(id(x), x)` in a set. That's > more specific than `(type(x), x)`, although both have their own > gotchas. > > > _______________________________________________ > Python-ideas mailing list -- [email protected] > To unsubscribe send an email to [email protected] > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/[email protected]/message/PWFX7WBNRQN5UBT27R2SOUBMUOXGVF6P/ > Code of Conduct: http://python.org/psf/codeofconduct/
_______________________________________________ Python-ideas mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/[email protected]/message/4N6EFYRFOWFSK7O4NQCSUMAFTOIUIDXP/ Code of Conduct: http://python.org/psf/codeofconduct/
