VicRock09
@VicRock09 (Vicky rock)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

辞書の反復変更

こんにちは、

私はこれについては初めてで、scaler の記事から取得した辞書に含まれるデータを処理するスクリプトに取り組んでいます。 辞書を反復処理しているときに、いくつかのエントリを削除する必要があります。 ただし、引き続き異常な動作が発生します。 これは私のコードです:

data = {'A': 10, 'B': 20, 'C': 30}

for key in data:
    if data[key] < 20:
        del data[key]

ループが適切に動作していないようで、「反復中に辞書のサイズが変更されました」という問題が発生することがあります。 反復中に辞書要素を削除する方法がわかりません。 誰かがこれについて最善の方法を教えてくれませんか?

0

2Answer

data = {'A': 10, 'B': 20, 'C': 30}

for key in list(data):
    if data[key] < 20:
        del data[key]

これでどうでしょうか?

1Like

filter(のラムダ式)に残す条件を書く方法はどうでしょうか?

data = {'A': 10, 'B': 20, 'C': 30}

data2 = dict(filter(lambda item: item[1] >= 20, data.items()))

print(data2) #{'B': 20, 'C': 30}
1Like

Comments

  1. 辞書内包表記でも書けますね。

    data = {'A': 10, 'B': 20, 'C': 30}
    
    data2 = {key: value for key, value in data.items() if value >= 20}
    
    print(data2) #{'B': 20, 'C': 30}
    

Your answer might help someone💌