b = dict(zip(a[::2], a[1::2]))
Якщо a
вона велика, ви, ймовірно, захочете зробити щось на кшталт наступного, що не робить жодних тимчасових списків, як описано вище.
from itertools import izip
i = iter(a)
b = dict(izip(i, i))
У Python 3 ви також можете використовувати розуміння диктанту, але, як не дивно, я думаю, що найпростіший спосіб зробити це буде з, range()
і це len()
, як правило, запах коду.
b = {a[i]: a[i+1] for i in range(0, len(a), 2)}
Таким чином, iter()/izip()
метод, мабуть, є найбільш Pythonic в Python 3, хоча, як зазначає EOL у коментарі, zip()
у Python 3 вже ледачий, тому вам не потрібно izip()
.
i = iter(a)
b = dict(zip(i, i))
Якщо ви хочете, щоб це було в одному рядку, вам доведеться обдурити і використовувати крапку з комою. ;-)