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-03 18:59:02
asal
450 orang telah melayarinya

How to Avoid the

Mengelakkan Ralat "RuntimeError: kamus berubah saiz semasa lelaran"

Mencuba untuk mengubah suai kamus semasa mengulanginya, seperti yang dilihat dalam coretan kod di bawah, boleh mencetuskan ralat "RuntimeError: kamus berubah saiz semasa lelaran":

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

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

Untuk mengatasi had ini, pelbagai pendekatan boleh digunakan:

Python 2. x dan 3.x:

Paksa salinan kekunci menggunakan 'senarai':

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

Python 3.x (dan kemudian):

Gunakan 'collections.OrderedDict':

<code class="python">from collections import OrderedDict

for i in OrderedDict(d):</code>
Salin selepas log masuk

Penyelesaian Alternatif:

  1. Buat kamus baharu dengan pengubahsuaian yang diingini:
<code class="python">new_d = {}
for key, value in d.items():
    if value:
        new_d[key] = value</code>
Salin selepas log masuk
  1. Gunakan kaedah 'popitem' Python 3.3 dan ulangi salinan:
<code class="python">keys_to_pop = list(d)
for i in keys_to_pop:
    if not d[i]:
        d.popitem(i)</code>
Salin selepas log masuk

Dengan memanfaatkan teknik ini, anda boleh memintas Ralat "RuntimeError: kamus berubah saiz semasa lelaran" semasa mengendalikan kamus dalam Python.

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!

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