Pre-PEP: Dictionary accumulator methods

David Eppstein eppstein at ics.uci.edu
Sat Mar 19 17:47:03 EST 2005


In article <JbL_d.8237$qN3.2116 at trndny01>,
 "Raymond Hettinger" <vze4rx4y at verizon.net> 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. 
    dictionary.setdefault(key,set()).add(value).

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
http://www.ics.uci.edu/~eppstein/



More information about the Python-list mailing list