I
Iain King
Hendrik van Rooyen said:Standard Python idiom:
if key in d:
d[key] += value
else:
d[key] = valueThe 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