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

Barbara Streisand
Lepaskan: 2024-11-02 19:22:30
asal
789 orang telah melayarinya

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

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

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

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!