Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Memadam Item dengan Selamat dari Kamus Semasa Lelaran dalam Python?

Bagaimana untuk Memadam Item dengan Selamat dari Kamus Semasa Lelaran dalam Python?

Patricia Arquette
Patricia Arquetteasal
2024-10-30 19:12:30851semak imbas

How to Safely Delete Items from a Dictionary During Iteration in Python?

Memadam Item daripada Kamus Semasa Mengulang dalam Python

Apabila bekerja dengan kamus dalam Python, mungkin terdapat keadaan di mana anda perlu mengalih keluar item yang memenuhi kriteria tertentu semasa lelaran. Walaupun secara intuitif, nampaknya melelaran terus ke atas kamus dan memadam item seperti yang ditemui sudah memadai, pendekatan ini bermasalah.

Cabaran dengan Pemadaman Terus semasa Lelaran

Dalam Python 3, memadamkan terus item daripada kamus sambil mengulanginya menimbulkan RuntimeError. Ini kerana mengubah suai saiz kamus semasa lelaran menyebabkan lelaran tidak berfungsi.

Dalam Python 2, pendekatan pemadaman terus ini mengakibatkan ralat jika item yang akan dipadamkan ialah item seterusnya dalam urutan lelaran.

Penyelesaian

Untuk memadamkan item dengan selamat daripada kamus semasa mengulang, berikut ialah penyelesaian yang disyorkan:

Python 3 :

Tukar kekunci kamus kepada senarai menggunakan senarai(mydict.keys()) sebelum lelaran. Ini membolehkan anda mengulangi senarai semasa membuat perubahan pada kamus:

<code class="python">for k in list(mydict.keys()):
    if mydict[k] == 3:
        del mydict[k]</code>

Python 2:

Gunakan kaedah kekunci() atau item() untuk buat senarai kunci atau tupel pasangan nilai kunci, masing-masing. Anda kemudiannya boleh mengulangi senarai ini dengan selamat untuk mengalih keluar item tanpa mengganggu lelaran:

<code class="python">for k in mydict.keys():
    if k == 'two':
        del mydict[k]</code>
<code class="python">for k, v in mydict.items():
    if v == 3:
        del mydict[k]</code>

Atas ialah kandungan terperinci Bagaimana untuk Memadam Item dengan Selamat dari Kamus Semasa Lelaran 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