ホームページ  >  記事  >  バックエンド開発  >  Python での反復中に辞書から項目を安全に削除するにはどうすればよいですか?

Python での反復中に辞書から項目を安全に削除するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-30 19:12:30851ブラウズ

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

Python での反復中に辞書から項目を削除する

Python で辞書を操作する場合、項目を削除する必要がある場合があります。反復中に特定の基準を満たすもの。直感的には、辞書を直接反復処理して、見つかった項目を削除すれば十分であるように思えるかもしれませんが、このアプローチには問題があります。

反復中の直接削除の課題

Python 3 では、反復処理中に辞書から項目を直接削除すると、RuntimeError が発生します。これは、反復中に辞書サイズを変更すると反復子が誤動作するためです。

Python 2 では、削除される項目が反復シーケンスの次の項目である場合、この直接削除アプローチではエラーが発生します。

解決策

反復中に辞書から項目を安全に削除するには、次の推奨解決策があります:

Python 3 :

反復の前に list(mydict.keys()) を使用して辞書キーをリストに変換します。これにより、辞書に変更を加えながらリストを反復処理できます。

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

Python 2:

keys() メソッドまたは items() メソッドを利用して、キーのリストまたはキーと値のペアのタプルをそれぞれ作成します。その後、これらのリストを安全に反復処理して、イテレータを中断することなく項目を削除できます。

<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>

以上がPython での反復中に辞書から項目を安全に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。