On Fri, 2007-07-20 at 19:39 +0000, Alex Popescu wrote:
> Neil Cerutti <[EMAIL PROTECTED]> wrote in 
> news:[EMAIL PROTECTED]:
> 
> > On 2007-07-20, Alex Popescu <[EMAIL PROTECTED]> wrote:
> >> Hi all!
> >>
> >> I am pretty sure this has been asked a couple of times, but I
> >> don't seem to find it on the archives (Google seems to have a
> >> couple of problems lately).
> >>
> >> I am wondering what is the most pythonic way of dealing with missing 
> >> keys and default values.
> >>
> >> According to my readings one can take the following approaches:
> > 
> > There's also the popular collections.defaultdict. 
> > 
> > Usually, the get method of normal dicts is what I want. I use a
> > defaultdict only when the implicit addition to the dictionary of
> > defaulted elements is what I really want.
> > 
> 
> This looks like the closest to my needs, but in my case the default value 
> involves the creation of a custom object instance that is taking parameters 
> from the current execution context, so I am not very sure I can use it.

If by "current execution context" you mean globally visible names, this
should still be possible:

>>> from collections import defaultdict
>>> def make_default():
...    return x+y
... 
>>> dd = defaultdict(make_default)
>>> x = 40
>>> y = 2
>>> print dd[0]
42
>>> x = "Dead"
>>> y = " Parrot"
>>> print dd[1]
Dead Parrot
>>> print dd
defaultdict(<function make_default at 0xb7f71e2c>, {0: 42, 1: 'Dead Parrot'})

HTH,

-- 
Carsten Haese
http://informixdb.sourceforge.net


-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to