tkp...@gmail.com wrote: > I using Python 3.2 and have a dictionary >>>> d = {0:[1,2], 1:[1,2,3], 2:[1,2,3,4]} > > whose values are lists I would like to zip into a list of tuples. If I > explicitly write: >>>> list(zip([1,2], [1,2,3], [1,2,3,4]) > [(1, 1, 1), (2, 2, 2)] > > I get exactly what I want. On the other hand, I have tried > >>>>list(zip(d)) > [(0,), (1,), (2,)] > >>>> list(zip(d.values())) > [([1, 2],), ([1, 2, 3],), ([1, 2, 3, 4],)] > >>>> list(zip(d[i] for i in d)) > [([1, 2],), ([1, 2, 3],), ([1, 2, 3, 4],)] > >>>> list(zip(*d)) > Traceback (most recent call last): > File "<pyshell#48>", line 1, in <module> > list(zip(*d)) > TypeError: zip argument #1 must support iteration > > and nothing quite works. What am I doing wrong?
You have all the building blocks ;) >>> d = {0:[1,2], 1:[1,2,3], 2:[1,2,3,4]} >>> list(zip(*d.values())) [(1, 1, 1), (2, 2, 2)] The order of the values is undefined, so you may want to sort the lists by key first: >>> list(zip(*[v for k, v in sorted(d.items())])) [(1, 1, 1), (2, 2, 2)] Well, I guess it doesn't really matter for that example... -- http://mail.python.org/mailman/listinfo/python-list