On Aug 20, 9:10 am, Peter Otten <__pete...@web.de> wrote: > Jan Kaliszewski wrote: > > 20-08-2009 o 02:05:57 Jan Kaliszewski <z...@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 -- http://mail.python.org/mailman/listinfo/python-list