Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Memadamkan Item dengan Selamat daripada Kamus Semasa Mengulang dalam Python?

Bagaimana untuk Memadamkan Item dengan Selamat daripada Kamus Semasa Mengulang dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-11-02 18:01:29282semak imbas

How to Safely Delete Items from a Dictionary While Iterating in Python?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn