Write this accumuator in a functional style
Steven D'Aprano
steve at pearwood.info
Tue Jul 11 02:11:13 EDT 2017
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.
--
Steve
More information about the Python-list
mailing list