ホームページ >バックエンド開発 >Python チュートリアル >空の値に基づいてキーを削除するときに発生する「RuntimeError: ディクショナリのサイズが反復中に変更されました」エラーを解決するにはどうすればよいですか?
「RuntimeError: 反復中に辞書のサイズが変更されました」エラーの回避策
「RuntimeError: 反復中に辞書のサイズが変更されました」が発生するシナリオを考えてみましょう。 「繰り返し」は、リストの辞書から空の値に基づいてキーと値のペアを削除しようとするときに発生します。以下のコードはエラーの例です。
<code class="python">d = {'a': [1], 'b': [1, 2], 'c': [], 'd':[]} for i in d: if not d[i]: d.pop(i)</code>
このエラーは、反復中にディクショナリを変更 (エントリの追加または削除) すると予期しない動作が発生するというルールに起因します。この制限を回避して問題を正常に解決するには、次のアプローチを採用できます。
キーのコピーを使用する
Python には、反復制限:
<code class="python">for i in list(d):</code>
キーのリストを作成すると、基本的に辞書キーのコピーが作成されます。これにより、辞書自体に変更を加えながらコピーを反復処理できます。
.keys() メソッドの使用 (Python 2.x のみ)
Python 2 の場合.x では、.keys() メソッドが同様の機能を提供し、キーのコピーを効果的に作成しました。
<code class="python">for i in d.keys():</code>
ただし、Python 3.x では、.keys() はオブジェクトを表示すると、回避策は適用されません。
以上が空の値に基づいてキーを削除するときに発生する「RuntimeError: ディクショナリのサイズが反復中に変更されました」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。