1. ホーム
  2. python

[解決済み] 特定のキーだけを含むようにdictをフィルタリングしますか?

2022-03-15 07:31:24

質問

を手に入れました。 dict には、たくさんのエントリーがあります。私はそのうちの数個にしか興味がないのです。他のものをすべて刈り取る簡単な方法はありますか?

解決方法は?

新しいdictを構築する。

dict_you_want = { your_key: old_dict[your_key] for your_key in your_keys }

辞書の理解を利用する。

これがないバージョン(Python 2.6 以前)を使っている場合は、この部分を dict((your_key, old_dict[your_key]) for ...) . より醜いですが、同じです。

これは、jnnnnnのバージョンとは異なり、(your_keysの数だけに依存する)安定したパフォーマンスを old_dict の大きさを問わない。速度面でもメモリ面でも。これはジェネレータ式なので、一度に一つの項目を処理し、old_dictのすべての項目を調べるわけではありません。

すべてをインプレースで削除します。

unwanted = set(keys) - set(your_dict)
for unwanted_key in unwanted: del your_dict[unwanted_key]