Pre-PEP: Dictionary accumulator methods

David Eppstein eppstein at
Sat Mar 19 23:47:03 CET 2005

In article <JbL_d.8237$qN3.2116 at trndny01>,
 "Raymond Hettinger" <vze4rx4y at> wrote:

> The rationale is to replace the awkward and slow existing idioms for 
> dictionary
> based accumulation:
>     d[key] = d.get(key, 0) + qty
>     d.setdefault(key, []).extend(values)
> In simplest form, those two statements would now be coded more readably as:
>    d.count(key)
>    d.appendlist(key, value)
> In their multi-value forms, they would now be coded as:
>   d.count(key, qty)
>   d.appendlist(key, *values)
> The error messages returned by the new methods are the same as those returned 
> by
> the existing idioms.
> The get() method would continue to exist because it is useful for 
> applications
> other than accumulation.
> The setdefault() method would continue to exist but would likely not make it
> into Py3.0.

The other dictionary based accumulation I've used but don't see here is 
with sets as dictionary values, i.e. 

I suppose it would be possible to appendlist then make a set from the 
list, but if you were to take that minimalist philosophy to an extreme 
you wouldn't need count either, you could just appendlist then use len.

David Eppstein
Computer Science Dept., Univ. of California, Irvine

More information about the Python-list mailing list