b = dict(zip(a[::2], a[1::2]))
Jika abesar, Anda mungkin ingin melakukan sesuatu seperti yang berikut, yang tidak membuat daftar sementara seperti di atas.
from itertools import izip
i = iter(a)
b = dict(izip(i, i))
Dalam Python 3 Anda juga bisa menggunakan pemahaman dict, tetapi ironisnya saya pikir cara paling sederhana untuk melakukannya adalah dengan range()dan len(), yang biasanya berupa bau kode.
b = {a[i]: a[i+1] for i in range(0, len(a), 2)}
Jadi iter()/izip()metode ini mungkin masih yang paling Pythonic di Python 3, meskipun seperti yang dicatat dalam komentar EOL, zip()sudah malas di Python 3 jadi Anda tidak perlu izip().
i = iter(a)
b = dict(zip(i, i))
Jika Anda menginginkannya dalam satu baris, Anda harus menipu dan menggunakan titik koma. ;-)