On Oct 19, 7:51 am, Hendrik van Rooyen <[email protected]>
wrote:
> On Sunday, 18 October 2009 11:31:19 Paul Rubin wrote:
>
> > Hendrik van Rooyen <[email protected]> writes:
> > > Standard Python idiom:
>
> > > if key in d:
> > > d[key] += value
> > > else:
> > > d[key] = value
>
> > The issue is that uses two lookups. If that's ok, the more usual idiom is:
>
> > d[key] = value + d.get(key, 0)
>
> I was actually just needling Aahz a bit. The point I was trying to make
> subliminally, was that there is a relative cost of double lookup for all
> cases versus exceptions for some cases. - Depending on the frequency
> of "some", I would expect a breakeven point.
>
> - Hendrik
Indeed - the method I use for this (picked up from this newsgroup), is
to work out roughly how often you need to make a new record instead of
altering a current one, and depending on that use either:
if key in d:
d[key] += value
else:
d[key] = value
or
try:
d[key] += value
except KeyError:
d[key] = value
I find both to be easily readable (and the similarity between the two
blocks is obvious and, to me at least, pleasing).
Iain
--
http://mail.python.org/mailman/listinfo/python-list