辞書の反復変更
辞書を反復しながら同時に辞書から項目を削除する必要があるのが一般的です。ただし、この操作は Python ではネイティブにサポートされていません。
反復処理中に辞書を変更すると、エラーが発生する可能性があります。たとえば、指定したコード スニペットは、Python 3 で次のエラーで失敗する可能性があります。
RuntimeError: dictionary changed size during iteration.
Python 3 の解決策
Python 3 では、解決策は次のとおりです。辞書からのキーのリストを取得し、代わりにそのリストを反復処理します。以下に例を示します。
<code class="python"># Python 3 or higher for k in list(mydict.keys()): if mydict[k] == 3: del mydict[k]</code>
リストは不変であり、辞書への変更の影響を受けないため、このアプローチは機能します。
Python 2 ソリューション
Python 2 では、keys() メソッドは反復子を返しますが、反復中にこれを変更することはできません。辞書を変更するには、次のアプローチを使用できます:
<code class="python"># Python 2 for k, v in mydict.items(): if v == 3: del mydict[k]</code>
Python 2 では、反復子をリストに変換することもできます:
<code class="python">for k in mydict.keys(): if mydict[k] == 3: del mydict[k]</code>
代替アプローチ
または、pop() メソッドを使用して、反復中に辞書から項目を削除することもできます。
<code class="python">for k in list(mydict.keys()): if k == 3: mydict.pop(k)</code>
このアプローチは、追加リスト。
以上がPython で反復中に辞書から項目を安全に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。