I just found out that d.values()
(for some dict d
) appears to be hashable not matter the type of the values.
However, d.keys()
appears to be unhashable, although the elements are guaranteed to be
hashable.
Here is an example:
d1 = {'d': 0, 'a': 1, 'e': 2, 'b': 3, 'c': 4}
d2 = {0: [], 1: [[]], 2: [[[]]], 3: [[[[]]]]}
now
print(hash(d1.values()))
print(hash(d2.values()))
Work fine and print some numerical values. But,
print(hash(d1.keys()))
and
print(hash(d2.keys()))
both throw TypeError: unhashable type: 'dict_keys'
.
I would have expected the exact opposite! Now I'm curious about the reason why Python does this that way.