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

Barbara Streisand
リリース: 2024-11-02 19:22:30
オリジナル
790 人が閲覧しました

How Can I Safely Delete Items From a Dictionary While Iterating in Python?

反復中に辞書から項目を削除する

辞書の反復中に、辞書の内容を変更することが必要になることがよくあります。ただし、反復中に項目を直接削除すると、エラーや一貫性のない結果が発生する可能性があります。

del を使用した反復 (Python 2)

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>
ログイン後にコピー

del による反復 (Python 3 )

Python 3 では、 mydict.keys() はリストではなくイテレーターを返します。反復中に辞書を変更すると、RuntimeError が発生します。これを回避するには、del を使用する前に反復子をリストに変換します:

<code class="python">for k in list(mydict.keys()):
    if mydict[k] == 3:
        del mydict[k]</code>
ログイン後にコピー

pop() を使用する

別のオプションは、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!