如果你有个巨大的字典,字典中的一些键属于一个特定的集合,你想创建一个包含这个键集合及其对应值的新字典,可以有下面解决方案:
>>> 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!'}
>>>
可以说,很完美的实现了需要!