b = dict(zip(a[::2], a[1::2]))
Si a
est grand, vous voudrez probablement faire quelque chose comme ce qui suit, qui ne fait pas de listes temporaires comme ci-dessus.
from itertools import izip
i = iter(a)
b = dict(izip(i, i))
Dans Python 3, vous pouvez également utiliser une compréhension de dict, mais ironiquement, je pense que le moyen le plus simple de le faire sera avec range()
et len()
, qui serait normalement une odeur de code.
b = {a[i]: a[i+1] for i in range(0, len(a), 2)}
La iter()/izip()
méthode est donc probablement la plus pythonique de Python 3, bien que, comme le note EOL dans un commentaire, zip()
soit déjà paresseuse dans Python 3, vous n'en avez donc pas besoin izip()
.
i = iter(a)
b = dict(zip(i, i))
Si vous le voulez sur une seule ligne, vous devrez tricher et utiliser un point-virgule. ;-)