Freezing a mutable (was Re: lambda)

Nick Coghlan ncoghlan at
Thu Jan 20 07:35:18 EST 2005

Antoon Pardon wrote:
> I missed that you would use it with the idiom: dct[x.frozen()]

The list itself isn't hashable with this approach, so you don't have much 
choice. I wasn't particularly clear about that point, though.

> I have two problems with this approach.
> 1) It doesn't work when you get your keys via the keys/items
>    methods.

True - the frozen object has no link back to the original object. That could be 
added though (by returning a tuple subtype with the extra attribute)

> 2) This is rather minor, but a user could still unfreeze
>    untimely 

True - doing that is less likely than mutating a hashable list though :)

I'm just noting this as a way to avoid copying data more than once when storing 
immutable copies of mutable data in a dictionary. You're quite right that there 
isn't a really clean idiom for doing that in Python (aside from moving to a 
different data structure that works natively as a dict key, naturally).


Nick Coghlan   |   ncoghlan at   |   Brisbane, Australia

More information about the Python-list mailing list