>Python 2.5.1 (r251:54863, Oct 30 2007, 13:45:26) > [GCC 4.1.2 20070925 (Red Hat 4.1.2-33)] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> x = { } > >>> x[lambda arg: arg] = 5 > >>> x[lambda arg: arg] > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > KeyError: <function <lambda> at 0x2aaaaabaab18>
I think the point is that function objects compare by object identity, so the two lambdas you use above are not equal even though they have the same code. Consider: >>> a = lambda arg: arg >>> x = {} >>> x[a] = 5 >>> x[a] 5 >>> x[lambda arg:arg] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: <function <lambda> at 0xa06602c> >>> Cheers, Ryan -- Ryan Kelly http://www.rfk.id.au | This message is digitally signed. Please visit r...@rfk.id.au | http://www.rfk.id.au/ramblings/gpg/ for details
signature.asc
Description: This is a digitally signed message part
-- http://mail.python.org/mailman/listinfo/python-list