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).

Cheers,
Nick.

--
Nick Coghlan   |   [EMAIL PROTECTED]   |   Brisbane, Australia
---------------------------------------------------------------
            http://boredomandlaziness.skystorm.net
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to