いくつかのキーと値のペア (約 16) を持つ大きな辞書オブジェクトがありますが、そのうち 3 つだけに興味があります。このような辞書をサブセット化する最善の方法 (最短/効率的/最もエレガント) は何ですか?
私が知っている限りでは、次のようになります。
bigdict = {'a':1,'b':2,....,'z':26}
subdict = {'l':bigdict['l'], 'm':bigdict['m'], 'n':bigdict['n']}
これよりももっとエレガントな方法があるはずです。
ベストアンサー1
以下を試してみてください:
dict((k, bigdict[k]) for k in ('l', 'm', 'n'))
...または Python バージョン 2.7 以降の場合:
{k: bigdict[k] for k in ('l', 'm', 'n')}
キーが辞書にあることはご存じだと思います。答えによるハーバード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'}}