Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #75477
| References | (1 earlier) <CAGGBd_riruS0nRM9+o+1dz=jVZgYOo09qX97P+LWK5Nu6HTYRw@mail.gmail.com> <mailman.12501.1406862741.18130.python-list@python.org> <53db11c1$0$29986$c3e8da3$5496439d@news.astraweb.com> <mailman.12503.1406866676.18130.python-list@python.org> <53db96bc$0$29986$c3e8da3$5496439d@news.astraweb.com> |
|---|---|
| Date | 2014-08-01 23:57 +1000 |
| Subject | Re: Dict when defining not returning multi value key error |
| From | Chris Angelico <rosuav@gmail.com> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.12512.1406901485.18130.python-list@python.org> (permalink) |
On Fri, Aug 1, 2014 at 11:31 PM, Steven D'Aprano <steve+comp.lang.python@pearwood.info> wrote: > Yes. Although Python promises (at least for classes in the standard > library) that x == y should imply that hash(x) == hash(y), it says > nothing about the other way: > > x == y implies that hash(x) == hash(y) This is the entire point of the hashing system. If equal values can hash differently, why bother calculating the hashes? Or if you prefer, the point of hashing is the logical converse of the above: hash(x) != hash(y) implies that x != y. If the hashes are different, you can skip the equality check, ergo you can build a data type that claims to search for the key that == the looked-up key, but actually does a much faster hash check first, and skips everything with a different hash. > but hash(x) == hash(y) does NOT imply that x == y. > Hello, pigeonhole principle :) If this were false - that is, if equal hashes DID imply equal objects - it would be necessary to completely encode an object's state in its hash, and hashes would be impossibly large. This would, in fact, destroy their value completely. ChrisA
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Re: Dict when defining not returning multi value key error Dan Stromberg <drsalists@gmail.com> - 2014-07-31 20:12 -0700
Re: Dict when defining not returning multi value key error Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-08-01 04:04 +0000
Re: Dict when defining not returning multi value key error Ben Finney <ben+python@benfinney.id.au> - 2014-08-01 14:17 +1000
Re: Dict when defining not returning multi value key error Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-08-01 13:31 +0000
Re: Dict when defining not returning multi value key error Chris Angelico <rosuav@gmail.com> - 2014-08-01 23:57 +1000
Re: Dict when defining not returning multi value key error Marko Rauhamaa <marko@pacujo.net> - 2014-08-01 18:39 +0300
Re: Dict when defining not returning multi value key error Terry Reedy <tjreedy@udel.edu> - 2014-08-01 17:42 -0400
Re: Dict when defining not returning multi value key error Chris Angelico <rosuav@gmail.com> - 2014-08-02 09:57 +1000
Re: Dict when defining not returning multi value key error Marko Rauhamaa <marko@pacujo.net> - 2014-08-02 09:41 +0300
Re: Dict when defining not returning multi value key error Marko Rauhamaa <marko@pacujo.net> - 2014-08-02 10:06 +0300
Re: Dict when defining not returning multi value key error Chris Angelico <rosuav@gmail.com> - 2014-08-02 20:58 +1000
Re: Dict when defining not returning multi value key error Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2014-08-02 11:47 +1000
Re: Dict when defining not returning multi value key error Chris Angelico <rosuav@gmail.com> - 2014-08-02 12:13 +1000
csiph-web