b = dict(zip(a[::2], a[1::2]))
Jika a
besar, 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. ;-)