ホームページ >バックエンド開発 >Python チュートリアル >反復中に辞書から項目を安全に削除するにはどうすればよいですか?

反復中に辞書から項目を安全に削除するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-02 02:34:30447ブラウズ

How to Safely Remove Items from a Dictionary During Iteration?

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

ディクショナリを反復処理するときに、エントリの追加または削除によりエラーが発生する可能性があります「RuntimeError: 反復中にディクショナリのサイズが変更されました」エラーが発生しました。この記事では、空のリスト値を持つキーと値のペアを辞書から削除するシナリオについて説明します。

問題ステートメント:

キーを含む辞書 d が与えられたとします。値がリストである値ペアの場合、値が空のリストであるキーと値のペアを削除したいとします。ただし、条件付きチェックを含む for ループを使用してこれを実行しようとすると、前述のエラーが発生します。

解決策:

このエラーを回避するには、次のコピーを作成します。 list() 関数を使用して辞書のキーを取得します。これにより、辞書の変更とは独立して反復できるキーの別のリストが作成されます。

<code class="python">for i in list(d):
    if not d[i]:
        d.pop(i)</code>

Python 2.x の代替アプローチ:

In Python 2 .x では、辞書に対して .keys() メソッドを呼び出すと、キーのコピーが返されました。したがって、次のアプローチを使用できます。

<code class="python">for i in d.keys():</code>

Python 3.x の注意:

Python 3.x では、.keys() メソッドは戻り値を返します。コピーではなくビュー オブジェクト。したがって、2 番目のアプローチは Python 3.x では機能しません。

以上が反復中に辞書から項目を安全に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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