[Python-Dev] function for counting items in a sequence

Steven Bethard steven.bethard at gmail.com
Sat Apr 7 23:53:08 CEST 2007


Alex Martelli wrote:
> Steven Bethard <steven.bethard at gmail.com> wrote:
> 
>> Alex Martelli wrote:
>>  > If we had a "turn sequence into bag" function somewhere
>>  > (and it might be worth having it for other reasons):
>>  >
>>  > def bagit(seq):
>>  >   import collections
>>  >   d = collections.defaultdict(int)
>>  >   for x in seq: d[x] += 1
>>  >   return d
>>
>> I use this function all the time -- I call it dicttools.count().  I'd
>> love to see this appear in the collections module or somewhere else in
>> the stdlib.
> 
> Maybe you should propose it in python-dev -- it does seem a reasonable
> utility addition to the collections module, after all.

Here's a patch implementing collections.counts() as suggested above:

     http://bugs.python.org/1696199

Example usage, from the docstring::

     >>> items = 'acabbacba'
     >>> item_counts = counts(items)
     >>> for item in 'abcd':
     ...     print item, item_counts[item]
     ...
     a 4
     b 3
     c 2
     d 0

The documentation is a little terse, but the function was so simple, I 
wasn't really sure what more to say.

STeVe


More information about the Python-Dev mailing list