On 07/11/2017 08:11 AM, Steven D'Aprano wrote:
I have a colleague who is allergic to mutating data structures. Yeah, I
know, he needs to just HTFU but I thought I'd humour him.
Suppose I have an iterator that yields named tuples:
Parrot(colour='blue', species='Norwegian', status='tired and shagged out')
and I want to collect them by colour:
accumulator = {'blue': [], 'green': [], 'red': []}
for parrot in parrots:
accumulator[parrot.colour].append(parrot)
That's pretty compact and understandable, but it require mutating a bunch
of pre-allocated lists inside an accumulator. Can we re-write this in a
functional style?
The obvious answer is "put it inside a function, then pretend it works by
magic" but my colleague's reply to that is "Yes, but I'll know that its
actually doing mutation inside the function".
Help me humour my colleague.
Hmm, isn't this just asking for itertools.groupby on the parrots sorted
by colour?
--
https://mail.python.org/mailman/listinfo/python-list