Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mengelakkan \'RuntimeError: kamus berubah saiz semasa lelaran\' dalam Python?

Bagaimana untuk Mengelakkan \'RuntimeError: kamus berubah saiz semasa lelaran\' dalam Python?

Mary-Kate Olsen
Lepaskan: 2024-11-02 20:06:30
asal
545 orang telah melayarinya

How to Avoid

Mengurus Lelaran Kamus untuk Mencegah Ralat Masa Jalan

Lelaran melalui kamus dalam Python boleh menimbulkan cabaran, terutamanya apabila mengubah suai kandungannya. Ralat "RuntimeError: kamus berubah saiz semasa lelaran" timbul apabila saiz kamus berubah semasa melelaran ke atasnya, menjadikan lelaran tidak sah.

Tafsiran Masalah:

Pertimbangkan senario di mana anda mempunyai kamus senarai dan ingin mengalih keluar pasangan nilai kunci dengan senarai nilai kosong:

<code class="python">d = {'a': [1], 'b': [1, 2], 'c': [], 'd':[]}</code>
Salin selepas log masuk

Untuk mencapai ini, anda boleh mencuba blok kod berikut:

<code class="python">for i in d:
    if not d[i]:
        d.pop(i)</code>
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini mencetuskan ralat yang dinyatakan di atas.

Punca dan Penyelesaian:

Ralat berlaku kerana lelaran ke atas kamus dalam Python ialah proses laluan tunggal. Perubahan pada saiz atau kandungan kamus semasa lelaran ini boleh membawa kepada tingkah laku yang tidak dapat diramalkan dan hasil yang tidak konsisten. Untuk memintas had ini, anda boleh menggunakan teknik alternatif:

1. Gunakan Senarai untuk Memaksa Penyalinan Kunci:

Dalam kedua-dua Python 2.x dan 3.x, anda boleh membuat senarai kekunci kamus untuk diulang dan bukannya terus ke atas kamus. Ini memastikan set kunci yang konsisten tanpa mengira sebarang pengubahsuaian yang dibuat pada kamus semasa lelaran:

<code class="python">for i in list(d):</code>
Salin selepas log masuk

2. Gunakan Kaedah .keys() (Python 2.x sahaja):

Dalam Python 2.x, memanggil .keys() mencipta salinan kunci kamus. Oleh itu, anda boleh mengulangi salinan ini sambil mengubah suai kamus asal:

<code class="python">for i in d.keys():</code>
Salin selepas log masuk

Perhatikan bahawa pendekatan ini tidak disyorkan dalam Python 3.x, kerana .keys() mengembalikan objek paparan yang mencerminkan sebarang perubahan yang dibuat ke kamus, yang berpotensi membawa kepada hasil yang tidak dapat diramalkan.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan \'RuntimeError: kamus berubah saiz semasa lelaran\' 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