Menukar '[key1,val1,key2,val2]' kepada Kamus: Kaedah Pythonic
Masalah:
Dalam Python, kami mempunyai senarai a dengan struktur nilai kunci berselang-seli, di mana setiap elemen genap mewakili kunci kamus dan seterusnya. unsur ganjil ialah nilai yang sepadan. Tugasnya ialah untuk menukar senarai ini kepada kamus b, di mana setiap pasangan nilai kunci dipetakan dengan sewajarnya.
Contoh:
a = ['hello', 'world', '1', '2']
Output yang Diingini:
b = {'hello': 'world', '1': '2'}
Penyelesaian:
Kaedah yang paling mudah untuk menyelesaikan masalah ini ialah menggunakan dict() terbina dalam Python dan fungsi zip(). Berikut ialah penyelesaian yang bersih dari segi sintaksis:
b = dict(zip(a[::2], a[1::2]))
Kaedah ini cekap dan mencapai hasil yang diinginkan. Walau bagaimanapun, jika prestasi menjadi kebimbangan, pendekatan alternatif ialah menggunakan alat iterator Python:
from itertools import izip i = iter(a) b = dict(izip(i, i))
Kaedah ini amat berguna apabila berurusan dengan senarai yang sangat besar, kerana ia tidak mencipta sebarang senarai sementara dalam proses.
Dalam Python 3, pemahaman dict juga menyediakan penyelesaian ringkas:
b = {a[i]: a[i+1] for i in range(0, len(a), 2)}
Sementara zip() sudah malas dalam Python 3, anda juga boleh menggunakan operator walrus (:=) untuk penyelesaian satu baris dalam Python 3.8 dan ke atas:
b = dict(zip(i := iter(a), i))
Akhirnya, pilihan terbaik bergantung pada keperluan khusus dan versi Python yang anda gunakan. Kaedah ini menawarkan penyelesaian yang bersih dan cekap untuk menukar senarai pasangan nilai kunci berselang-seli kepada kamus dalam Python.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Senarai Nilai Kunci Bergantian dengan Cekap kepada Kamus dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!