b = dict(zip(a[0::2], a[1::2]))
Si a
est grande, vous aurez probablement envie de faire quelque chose comme ce qui suit, ce qui ne veut pas faire de temporaire listes comme ci-dessus.
from itertools import izip
i = iter(a)
b = dict(izip(i, i))
En Python 3, vous pouvez également utiliser un dict compréhension, mais paradoxalement, je pense que la façon la plus simple de le faire, ce sera avec range()
et len()
, ce qui serait normalement une odeur de code.
b = {a[i]: a[i+1] for i in range(0, len(a), 2)}
Si l' iter()/izip()
méthode est certainement la plus Pythonic en Python 3, bien que, comme EOL notes dans un commentaire, zip()
est déjà paresseux en Python 3 de sorte que vous n'avez pas besoin d' izip()
.
i = iter(a)
b = dict(zip(i, i))
Si vous le souhaitez sur une ligne, vous aurez à tricher et utiliser un point-virgule. ;-)