Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Boleh Memadam Item Dengan Selamat Dari Kamus Semasa Mengulang dalam Python?

Bagaimanakah Saya Boleh Memadam Item Dengan Selamat Dari Kamus Semasa Mengulang dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-11-02 19:22:30789semak imbas

How Can I Safely Delete Items From a Dictionary While Iterating in Python?

Memadamkan Item daripada Kamus Semasa Lelaran

Ia selalunya perlu untuk mengubah suai kandungan kamus sambil mengulanginya. Walau bagaimanapun, pemadaman item secara langsung semasa lelaran boleh membawa kepada ralat atau hasil yang tidak konsisten.

Lelaran dengan del (Python 2)

Dalam Python 2, pemadaman item dengan del semasa lelaran boleh menyebabkan masalah kerana lelaran menjangkakan saiz kamus kekal malar. Tingkah laku ini mengakibatkan RuntimeError. Menggunakan kekunci atau kaedah item adalah disyorkan:

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

# or

for k, v in mydict.items():
    if v == val:
        del mydict[k]</code>

Lelaran dengan del (Python 3 )

Dalam Python 3 , mydict.keys() mengembalikan iterator, bukan senarai. Mengubah suai kamus semasa lelaran akan menyebabkan RuntimeError. Untuk mengelakkan ini, tukar lelaran kepada senarai sebelum menggunakan del:

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

Menggunakan pop()

Pilihan lain ialah menggunakan kaedah pop() untuk mengalih keluar item:

<code class="python">while mydict:
    k, v = mydict.popitem()
    if v == 3:
        mydict[k] = v

# or

for k in mydict.copy():
    if mydict[k] == 3:
        mydict.pop(k)</code>

Pengesyoran

Untuk Python 3 , menggunakan kaedah kekunci atau item dengan penukaran senarai disyorkan untuk mengelakkan ralat masa jalan. Untuk Python 2, kekunci atau kaedah item hendaklah digunakan terus untuk mengubah suai kamus dengan selamat.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memadam Item Dengan Selamat Dari 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