ホームページ  >  記事  >  バックエンド開発  >  空の値に基づいてキーを削除するときに発生する「RuntimeError: ディクショナリのサイズが反復中に変更されました」エラーを解決するにはどうすればよいですか?

空の値に基づいてキーを削除するときに発生する「RuntimeError: ディクショナリのサイズが反復中に変更されました」エラーを解決するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-03 10:21:29524ブラウズ

How Can I Resolve the

「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 サイトの他の関連記事を参照してください。

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