1. ホーム
  2. python

[解決済み] 辞書からキーと値のペアのサブセットを抽出する?

2022-03-24 22:01:40

質問

私はいくつかのキーと値のペア(約16)を持つ大きな辞書オブジェクトを持っていますが、私はそれらのうちの3つだけに興味があります。それを達成するための最良の方法(最短/効率的/最もエレガント)は何でしょうか?

私が知っているベストは

bigdict = {'a':1,'b':2,....,'z':26} 
subdict = {'l':bigdict['l'], 'm':bigdict['m'], 'n':bigdict['n']}

これよりもっとエレガントな方法があるはずです。

どのように解決するのですか?

試してみてはいかがでしょうか。

dict((k, bigdict[k]) for k in ('l', 'm', 'n'))

... あるいは Python 3 Python バージョン 2.7 以降 (おかげさまで ファビオ・ディニッツ 2.7でも動作することを指摘してくれた) :

{k: bigdict[k] for k in ('l', 'm', 'n')}

アップデート:として Håvard S が指摘するように、キーが辞書に入ることが分かっていることを前提にしています。 回答 その仮定ができない場合。あるいは ティンボ にないキーが必要な場合、コメントで指摘しているように、そのキーは bigdict にマッピングする。 None , ができる。

{k: bigdict.get(k, None) for k in ('l', 'm', 'n')}

Python 3 を使っていて、かつ のみ 新しいディクショナリに、元のディクショナリに実際に存在するキーが欲しい場合、オブジェクトを表示するファクトを使用して、いくつかのセットオペレーションを実装することができます。

{k: bigdict[k] for k in bigdict.keys() & {'l', 'm', 'n'}}