[Python-Dev] Accessing globals without dict lookup (original) (raw)

Guido van Rossum guido@python.org
Fri, 08 Feb 2002 16:19:54 -0500


Guido van Rossum writes: > Oops, I was indeed confused. I think I meant this: > > def keys(self): _> return [k for k, c in self.dict.iteritems() if c.objptr is not NULL]

Was I not clear, or am I missing something entirely?

I'm guessing both. ;-)

keys() needs no special treatment, but items() and values() do:

class celldict(object): ... def keys(self): _return self.dict.keys()

Wrong. keys() does need special treatment. If c.objptr is NULL, the cell exists, but keys() should not return the corresponding key. This is so that len(x.keys()) == len(x.values()), amongst other reasons!

def items(self): _return [k, c.objptr for k, c in self.dict.iteritems() if c.objptr is not NULL]

def values(self): _return [c.objptr for c in self.dict.itervalues() if c.objptr is not NULL]

Yes, these are correct.

--Guido van Rossum (home page: http://www.python.org/~guido/)