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