Pythonで辞書のサブセットを取得する方法


巨大な辞書がある場合、辞書のいくつかのキーが特定のセットに属している場合は、このキーセットと対応する値を含む新しい辞書を作成します.次の解決策があります.
>>> def sub_dict(dct, keys, default=None):
...     return dict([(key, dct.get(key, default)) for key in keys])
...
>>> dct = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
>>> sub_dict(dct, 'ac')
{'a': 1, 'c': 3}
>>> sub_dict(dct, 'e', 'KEY NOT EXIST!')
{'e': 'KEY NOT EXIST!'}

元の辞書から条件を満たすエントリを削除する場合は、次のソリューションを使用します.
>>> def sub_dict_remove(dct, keys, default=None):
...     return dict([(key, dct.pop(key, default)) for key in keys])
...
>>> dct = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
>>> sub_dict_remove(dct, 'abc')
{'a': 1, 'c': 3, 'b': 2}
>>> dct
{'d': 4}
>>> sub_dict_remove(dct, 'e', 'KEY NOT EXIST!')
{'e': 'KEY NOT EXIST!'}
>>>

完璧に需要を実現したと言える!