[Python-Dev] tally (and other accumulators) (original) (raw)
Jeremy Hylton jeremy at alum.mit.edu
Tue Apr 4 17:01:05 CEST 2006
- Previous message: [Python-Dev] tally (and other accumulators)
- Next message: [Python-Dev] tally (and other accumulators)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 4/4/06, Alex Martelli <aleaxit at gmail.com> wrote:
import collections def tally(seq): d = collections.defaultdict(int) for item in seq: d[item] += 1 return dict(d)
Nevertheless, simplicity and generality make it advisable to supply it as part of the standard library (location TBD). A good alternative would be a classmethod tally within collections.defaultdict, building and returning a defaultdict as above (with a .factory left to int, for further possible use as a 'bag'/multiset data structure); this would solve the problem of where to locate tally if it were to be a function. defaultdict.tally would be logically quite similar to dict.fromkeys, except that keys happening repeatedly get counted (and so each associated to a value of 1 and upwards) rather than "collapsed".
Putting it somewhere in collections seems like a great idea. defaultdict is a bit odd, because the functionality doesn't have anything to do with defaults, just dicts. maybe a classmethod on regular dicts would make more sense?
I write this function regularly, so I'd be happy to have it available directly.
Jeremy
- Previous message: [Python-Dev] tally (and other accumulators)
- Next message: [Python-Dev] tally (and other accumulators)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]