辞書の反復中に、辞書の内容を変更することが必要になることがよくあります。ただし、反復中に項目を直接削除すると、エラーや一貫性のない結果が発生する可能性があります。
Python 2 では、反復中に del を使用して項目を削除すると問題が発生する可能性があります。辞書のサイズが一定であることを期待します。この動作により、RuntimeError が発生します。代わりに、キーまたはアイテムのメソッドを使用することをお勧めします。
<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>
Python 3 では、 mydict.keys() はリストではなくイテレーターを返します。反復中に辞書を変更すると、RuntimeError が発生します。これを回避するには、del を使用する前に反復子をリストに変換します:
<code class="python">for k in list(mydict.keys()): if mydict[k] == 3: del mydict[k]</code>
別のオプションは、pop() メソッドを使用して項目を削除することです:
<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>
Python 3 の場合は、実行時エラーを避けるために、リスト変換でキーまたは項目メソッドを使用することをお勧めします。 Python 2 の場合、辞書を安全に変更するには、キーまたはアイテムのメソッドを直接使用する必要があります。
以上がPython での反復中に辞書から項目を安全に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。