New submission from Ben Roberts:
In python 3.4 these result in a TypeError:
hash({}.keys())
hash({}.items())
But this succeeds:
hash({}.values())
The 2.7 backports of these - viewkeys, viewitems, and viewvalues respectively -
behave equivalently.
See more discussion on StackOverflow:
http://stackoverflow.com/questions/25293912/why-are-some-dict-views-hashable
The cause appears to be that key and item views implement rich comparisons,
whereas values views do not. Therefore dict_view objects use the default
id()-based __hash__ implementation.
Possible fix: explicitly set tp_hash to PyObject_HashNotImplemented for
PyDictValues_Type - and perhaps for the other two view types as well, for
symmetry.
----------
components: Interpreter Core
messages: 225287
nosy: roippi
priority: normal
severity: normal
status: open
title: dict_values objects are hashable
type: behavior
versions: Python 2.7, Python 3.4
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue22192>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com