Dictionary from a list

iu2 israelu at elbit.co.il
Thu Aug 20 12:41:14 EDT 2009


On Aug 20, 9:10 am, Peter Otten <__pete... at web.de> wrote:
> Jan Kaliszewski wrote:
> > 20-08-2009 o 02:05:57 Jan Kaliszewski <z... at chopin.edu.pl> wrote:
>
> >> Or probably better:
>
> >>      from itertools import islice, izip
> >>      dict(izip(islice(li, 0, None, 2), islice(li, 1, None, 2)))
>
> > Or similarly, perhaps more readable:
>
> >      iterator = iter(li)
> >      dict((iterator.next(), iterator.next()) for i in xrange(len(li)/2))
>
> I just can't stop posting this one:
>
> >>> from itertools import izip
> >>> it = iter([1,2,3,4,5,6])
> >>> dict(izip(it, it))
>
> {1: 2, 3: 4, 5: 6}
>
> I really tried, but yours drove me over the edge.
>
> Peter

Nice.
(but looks like stepping towards the dark side ...  :-)

I also liked this one:
iterator = iter(li)
dict((iterator.next(), iterator.next()) for i in xrange(len(li)/2))

which inspired me to do something quite similar:

a=range(1, 11)
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> dict([[a.pop(0), a.pop(0)] for i in range(len(a)/2)])
{1: 2, 3: 4, 9: 10, 5: 6, 7: 8}


Thanks



More information about the Python-list mailing list