<div dir="ltr">Oh yeah, this has been my bête noire for a long time.  I think I first mentioned this in 2003 at:<div><br></div><div>  <a href="https://mail.python.org/pipermail/python-list/2003-March/205446.html">https://mail.python.org/pipermail/python-list/2003-March/205446.html</a><br>
</div><div><br></div><div>Then later in an IBM developerWorks article in 2005:</div><div><br></div><div>  <a href="http://gnosis.cx/publish/programming/charming_python_b25.html">http://gnosis.cx/publish/programming/charming_python_b25.html</a><br>
</div><div><br></div><div>(the URL for the IBM version seems to have gone 404).</div><div><br></div><div>I do know why things are as they are and how to work with them... but hey, at least it let me coin the phrase "Incomparable abominations" which I am still rather proud of. </div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jan 21, 2014 at 1:21 PM, Chris Angelico <span dir="ltr"><<a href="mailto:rosuav@gmail.com" target="_blank">rosuav@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Wed, Jan 22, 2014 at 8:11 AM, David Mertz <<a href="mailto:mertz@gnosis.cx">mertz@gnosis.cx</a>> wrote:<br>

> But this is just a question of inequality versus identity and that sets and<br>
> dictionaries are, IMO, too sloppy about that.  That is, they behave exactly<br>
> as documented and as the BDFL has decreed, but I still feel uneasy about:<br>
><br>
>   >>> a = {1, 1+0j, 2}<br>
>   >>> b = {1+0j, 1, 2}<br>
>   >>> a<br>
>   {(1+0j), 2}<br>
>   >>> b<br>
>   {1, 2}<br>
>   >>> a == b<br>
>   True<br>
<br>
</div>This is because Python's made the decision that an int, a float, and a<br>
complex, representing the same number, should compare equal. I<br>
personally think they shouldn't (partly because it implies that<br>
they're all in some sort of tower, where the higher types can<br>
represent the lower types perfectly, and can perfectly represent that<br>
there's no further information - true of (float, complex) but not of<br>
(int, float), and it leads to problems with large integers), but it's<br>
a decision that's been made, and sets/dicts have to follow that. With<br>
small numbers, it just means that there's an identity-vs-value<br>
distinction (1 == 1.0 == 1+0j, but they're not is-identical), and sets<br>
have always had and will always have that issue.<br>
<div class="HOEnZb"><div class="h5"><br>
ChrisA<br>
_______________________________________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org">Python-ideas@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-ideas" target="_blank">https://mail.python.org/mailman/listinfo/python-ideas</a><br>
Code of Conduct: <a href="http://python.org/psf/codeofconduct/" target="_blank">http://python.org/psf/codeofconduct/</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Keeping medicines from the bloodstreams of the sick; food <br>from the bellies of the hungry; books from the hands of the <br>uneducated; technology from the underdeveloped; and putting <br>
advocates of freedom in prisons.  Intellectual property is<br>to the 21st century what the slave trade was to the 16th.<br>
</div>