On Tue, 22 Feb 2022 at 20:24, Frank Millman <fr...@chagford.com> wrote:
>
> Hi all
>
> I think this should be a simple one-liner, but I cannot figure it out.
>
> I have a dictionary with a number of keys, where each value is a single
> list -
>
>  >>> d = {1: ['aaa', 'bbb', 'ccc'], 2: ['fff', 'ggg']}
>
> I want to combine all values into a single list -
>
>  >>> ans = ['aaa', 'bbb', 'ccc', 'fff', 'ggg']
>
> I can do this -
>
>  >>> a = []
>  >>> for v in d.values():
> ...   a.extend(v)
> ...
>  >>> a
> ['aaa', 'bbb', 'ccc', 'fff', 'ggg']
>
> I can also do this -
>
>  >>> from itertools import chain
>  >>> a = list(chain(*d.values()))
>  >>> a
> ['aaa', 'bbb', 'ccc', 'fff', 'ggg']
>  >>>
>
> Is there a simpler way?
>

itertools.chain is a good option, as it scales well to arbitrary
numbers of lists (and you're guaranteed to iterate over them all just
once as you construct the list). But if you know that the lists aren't
too large or too numerous, here's another method that works:

>>> sum(d.values(), [])
['aaa', 'bbb', 'ccc', 'fff', 'ggg']

It's simply adding all the lists together, though you have to tell it
that you don't want a numeric summation.

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to