私は優れたPythonistaになり、可能な場合はリスト内包表記を使用しようとしています...
なぜこれが機能しないのですか?
[del my_dict[r] for r in to_remove]
to_remove
目標は、リスト内のエントリをdictオブジェクトから削除することmy_dict
です。
for r in to_remove:
del my_dict[r]
正常に動作しますが、リスト内包表記でそれを実行しようとしています
私は優れたPythonistaになり、可能な場合はリスト内包表記を使用しようとしています...
なぜこれが機能しないのですか?
[del my_dict[r] for r in to_remove]
to_remove
目標は、リスト内のエントリをdictオブジェクトから削除することmy_dict
です。
for r in to_remove:
del my_dict[r]
正常に動作しますが、リスト内包表記でそれを実行しようとしています
副作用のためにリスト内包表記を使用するべきではありません。それはpythonicではありません。
代わりに、単純なforループを使用する必要があります。
なぜならdel X
、そのように使用されることを意図していないステートメントだからです。構文的に正しくありません。
ただ:
for r in to_remove:
del my_dict[r]
基本的には、代わりにリストを繰り返し処理します。
for r in to_remove:
del my_dict[r]
あなたはこれを行うことができますが、私はジャミラックを聞きます。そしてもちろん、これは新しいリストを返しますが、から削除するのではありませんmy_dict
my_dict = [x for x in my_dict if x not in to_remove]
あなたはすることができます:
[my_dict.pop(r) for r in to_remove]
.pop
del
削除されたキーの値を返します。これは(ここを参照)よりも少し遅くなり、これを行うための最も「pythonic」な方法ではありません。したがって、他の人がアドバイスしているように、おそらくそうすべきではありません。