2009/8/11 Asun Friere <afri...@yahoo.co.uk>: > On Aug 12, 12:15 pm, James Stroud <jstr...@mbi.ucla.edu> wrote: > >> I realize I left out my use. The intent of the function is to flag >> objects that will make useful keys for a persistent dictionary. The >> {C():4}[C()] example demonstrates why I want to avoid certain types of >> keys--I don't want users to do things like {C():4, C():4}, which python >> happily allows but falls apart at the level of persistence. > > What am I missing here? How, in terms of persistence, is {C():4, C(): > 4} conceptually different from {'spam':4, 'ham':4}?
Consider the case of pickling the data twice to 2 separate files. When loaded from both files into the same program, the spam-ham dicts will work as expected. The C()s will not. For cs1[cs2.keys()[0]] will raise KeyError. Cheers, Chris -- http://blog.rebertia.com -- http://mail.python.org/mailman/listinfo/python-list