Why are tuples immutable?
Antoon Pardon
apardon at forel.vub.ac.be
Wed Dec 15 07:24:37 EST 2004
Op 2004-12-15, Fredrik Lundh schreef <fredrik at pythonware.com>:
> Antoon Pardon wrote:
>
>>> how would you implement a dictionary where the keys could change, without
>>> any performance penalty compared to the current implementation?
>>
>> The performace gained by using tuples as keys in dictionaries is
>> entirely illusional.
>>
>> Sure the fact that you use a tuple which is immutable, makes that
>> you can put the key directly in the dictionary instead of a copy
>> and that will gain you some performance.
>>
>> But this performance gain can be more than offset by other code
>> in the program.
>>
>> Suppose you need a list/tuple as a key and most opperation you
>> will do on those keys will be appends and pops. You now have the
>> itwo choices
>>
>> 1) Always convert your lists to tuples on key entries
>> and keys accesses, which will mean more copying than when a
>> copy of a key would have been made on key entry.
>>
>> 2) Simulate appends and pops by tuple operations which can also
>> require more copying than was gained by using tuples as key
>
> sorry, but I don't understand your reply at all. are you saying that dictionaries
> could support mutable keys (e.g lists) by making a copy of the key? how would
> such a dictionary pick up changes to the original key object? (I'm talking about
> the key stored in the dictionary, not the key you're using to look things up).
You want to mutate a key that is within a dictionary?
That sounds as bad as mutating an element in a sorted list.
--
Antoon Pardon
More information about the Python-list
mailing list