Pengubahsuaian Kamus Berulang
Adalah perkara biasa untuk perlu memadamkan item daripada kamus sambil mengulanginya secara serentak. Walau bagaimanapun, operasi ini tidak disokong secara asli dalam Python.
Mengubah suai kamus semasa mengulanginya boleh membawa kepada ralat. Sebagai contoh, coretan kod yang anda berikan mungkin gagal dalam Python 3 dengan ralat:
RuntimeError: dictionary changed size during iteration.
Penyelesaian Python 3
Dalam Python 3, penyelesaiannya adalah untuk mencipta senarai kunci daripada kamus dan ulangi senarai itu. Berikut ialah contoh:
<code class="python"># Python 3 or higher for k in list(mydict.keys()): if mydict[k] == 3: del mydict[k]</code>
Pendekatan ini berfungsi kerana senarai tidak boleh diubah dan tidak akan terjejas oleh perubahan pada kamus.
Penyelesaian Python 2
Dalam Python 2, kaedah keys() mengembalikan lelaran, yang tidak boleh diubah suai semasa lelaran. Untuk mengubah suai kamus, anda boleh menggunakan pendekatan berikut:
<code class="python"># Python 2 for k, v in mydict.items(): if v == 3: del mydict[k]</code>
Dalam Python 2, anda juga boleh menukar iterator kepada senarai:
<code class="python">for k in mydict.keys(): if mydict[k] == 3: del mydict[k]</code>
Pendekatan Alternatif
Sebagai alternatif, anda boleh menggunakan kaedah pop() untuk memadam item daripada kamus sambil mengulang:
<code class="python">for k in list(mydict.keys()): if k == 3: mydict.pop(k)</code>
Perhatikan bahawa pendekatan ini lebih cekap kerana ia tidak mewujudkan senarai tambahan.
Atas ialah kandungan terperinci Bagaimana untuk Memadamkan Item dengan Selamat daripada Kamus Semasa Mengulang dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!