&gt;  If hash(x) == hash(y), then some_dict[x] and some_dict[y] will return the same value<p>This was my first thought too, so I checked but<p>&gt;&gt;&gt; hash(0)<p>0<p>&gt;&gt;&gt; hash(0.0)<p>0<p>&gt;&gt;&gt; hash(&#x27;&#x27;)<p>0<p>&gt;&gt;&gt; {0: 4}[&#x27;&#x27;]<p>KeyError: &#x27;&#x27;<p>Which makes sense, because there is checking for hash collisions, and when they are resolved 0 == 0.0 while 0 != &#x27;&#x27;