[Python-Dev] Candidate Itertools

Aahz aahz at pythoncraft.com
Mon Jun 21 23:52:55 EDT 2004


On Sat, Jun 19, 2004, Raymond Hettinger wrote:
> [Aahz]
>>Raymond:
>>>
>>> Feedback is requested for two prospective itertools:
>>>
>>> def count_elements(iterable):
>>>     b = {}
>>>     for elem in iterable:
>>>         b[elem] = b.get(elem, 0) + 1
>>>     return ((cnt, elem) for elem, cnt in b.iteritems())
>> 
>> +1 provided it returns either (elem, cnt) or the dict itself.
> 
> Hmm, there seems to be 100% support for returning a dictionary and zero
> support for my iterable (cnt, elem) ... to feed min(), max(), sorted(),
> nlargest(), and nsmallest().

The problem is that it's useful for those operations -- and nothing
else.  It's narrow functionality, and anyone looking just at itertools
will find this confusing; it's just not the natural definition for
something named ``count_elements``, and I suspect it is not possible to
create a good name for your purpose.  Anyone who understands Python will
expect ``count_elements`` to return (elem,cnt) or a dict.
-- 
Aahz (aahz at pythoncraft.com)           <*>         http://www.pythoncraft.com/

"Typing is cheap.  Thinking is expensive."  --Roy Smith, c.l.py



More information about the Python-Dev mailing list