Zipping a dictionary whose values are lists
Dan Sommers
dan at tombstonezero.net
Thu Apr 12 12:45:33 EDT 2012
On Thu, 12 Apr 2012 09:28:03 -0700 (PDT)
tkpmep at 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?
Try this:
>>> list(zip(*d.values()))
d.values() is a list, but zip wants the individual values as separate
arguments.
HTH,
Dan
More information about the Python-list
mailing list