[Python-Dev] Dicts are broken Was: unicode hell/mixing str andunicode asdictionarykeys

Giovanni Bajo rasky at develer.com
Sat Aug 5 13:17:18 CEST 2006


Bob Ippolito <bob at redivi.com> wrote:

>>> Well it's not recomended to mix strings and unicode in the
>>> dictionaries
>>> but if we mix for example integer and float we have the same
>>> thing. It
>>> doesn't raise exception but still it is not expected behavior for
>>> me:
>>>>>> d = { 1.0: 10, 2.0: 20 }
>>> then if i somewhere later do:
>>>>>> d[1] = 100
>>>>>> d[2] = 200
>>> to have here all floats in d.keys(). May be this is not a best
>>> example.
>>
>> There is a strong difference. Python is moving towards unifying
>> number types in
>> a way (see the true division issue): the idea is that, all in all,
>> user
>> shouldn't really care what type a number is, as long as he knows
>> it's a number.
>> On the other hand, unicode and str are going to diverge more and
>> more.
>
> Well, not really. True division makes int/int return float instead of
> an int. You really do have to care if you have an int or a float most
> of the time, they're very different semantically.

Then I'd ask why Python goes through hoops to make sure that hash(1.0) ==
hash(1), in the first place.

Giovanni Bajo



More information about the Python-Dev mailing list