Kay Schluehr wrote:
Maybe also the subclassing idea I introduced falls for short for the same reasons. Adding an accumulator to a dict should be implemented as a *decorator* pattern in the GoF meaning of the word i.e. adding an interface to some object at runtime that provides special facilities.
Usage:
d = intdict(extend=MyAccumulator) hasattr(d,"tally")
True
hasattr(d,"appendlist")
False
This could be generalized to other fundamental data structures as well.
Regards Kay
Or similarly, something like the 'reversed' view of a sequence:
I could imagine a class: accumulator(mapping, default, incremetor) such that: >>> my_tally = accumulator({}, 0, operator.add) or >>> my_dict_of_lists = accumulator({}, [], list.append) or >>> my_dict_of_sets = accumulator({}, set(), set.add)
then: .accumulate(key, value) "does the right thing" in each case.
a bit cumbersome, because of having to specify the accumulation method, but avoids adding methods to, or sub-classing dict
Michael
-- http://mail.python.org/mailman/listinfo/python-list