ホームページ  >  記事  >  バックエンド開発  >  「実行時エラー: 反復中にディクショナリのサイズが変更されました」を回避するにはどうすればよいですか?

「実行時エラー: 反復中にディクショナリのサイズが変更されました」を回避するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-04 10:01:30272ブラウズ

How to Avoid

「RuntimeError: 反復中にディクショナリのサイズが変更されました」の回避

反復処理中にディクショナリを変更しようとすると、「 RuntimeError: 反復中にディクショナリのサイズが変更されました」エラー。これは、辞書のループ中に辞書のサイズを変更 (エントリの追加または削除) すると反復子が無効になるために発生します。

この問題に対処するには、list() または iterate を使用して辞書キーのコピーを作成することをお勧めします。 d.keys() を介してキーを上書きします。 Python 3.x の場合、d.keys() はビュー オブジェクトを返すため、list() を使用して明示的にコピーを作成する必要があります。

たとえば、次の辞書について考えてみましょう:

<code class="python">d = {'a': [1], 'b': [1, 2], 'c': [], 'd':[]}</code>

空のリストを持つキーと値のペアを削除するには、次のコードを使用できます:

<code class="python">for i in list(d):  # Python 3.x
# or
for i in d.keys():  # Python 2.x
    if not d[i]:
        d.pop(i)</code>

list() を使用してキーのコピーを作成することで、反復中に辞書サイズを変更する問題を回避します。そしてループが正常に完了することを確認してください。

以上が「実行時エラー: 反復中にディクショナリのサイズが変更されました」を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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