[Python-ideas] incremental hashing in __hash__
Neil Girdhar
mistersheik at gmail.com
Thu Jan 5 23:36:51 EST 2017
On Thu, Jan 5, 2017 at 9:10 PM Stephen J. Turnbull <
turnbull.stephen.fw at u.tsukuba.ac.jp> wrote:
> Paul Moore writes:
>
> > The debate here regarding tuple/frozenset indicates that there may not
> > be a "standard way" of hashing an iterable (should order matter?).
>
> If part of the data structure, yes, if an implementation accident, no.
>
> > Although I agree that assuming order matters is a reasonable
> > assumption to make in the absence of any better information.
>
> I don't think so. Eg, with dicts now ordered by insertion, an
> order-dependent default hash for collections means
>
> a = {}
> b = {}
> a['1'] = 1
> a['2'] = 2
> b['2'] = 2
> b['1'] = 1
> hash(a) != hash(b) # modulo usual probability of collision
>
> (and modulo normally not hashing mutables). For the same reason I
> expect I'd disagree with Neil's proposal for an ImmutableWhatever
> default __hash__ although the hash comparison is "cheap", it's still a
> pessimization. Haven't thought that through, though.
>
I don't understand this? How is providing a default method in an abstract
base class a pessimization? If it happens to be slower than the code in
the current methods, it can still be overridden.
>
> BTW, it occurs to me that now that dictionaries are versioned, in some
> cases it *may* make sense to hash dictionaries even though they are
> mutable, although the "hash" would need to somehow account for the
> version changing. Seems messy but maybe someone has an idea?
>
I think it's important to keep in mind that dictionaries are not versioned
in Python. They happen to be versioned in CPython as an unexposed
implementation detail. I don't think that such details should have any
bearing on potential changes to Python.
> Steve
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20170106/ded07bc0/attachment.html>
More information about the Python-ideas
mailing list