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

Linda Hamilton
Lepaskan: 2024-11-02 18:01:29
asal
245 orang telah melayarinya

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.
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan