获取一个Python字典的子集

我有一本字典:

{'key1':1, 'key2':2, 'key3':3} 

我需要将该字典的子集传递给第三方代码。 它只需要一个包含密钥['key1', 'key2', 'key99'] ,如果它获得另一个密钥(例如'key3' ),它就会爆炸混乱。 有问题的代码是不受我控制的,所以我留在一个我必须清理我的字典的位置。

什么是最好的方法来限制字典到一组键?

鉴于上面的示例字典和允许的键,我想:

 {'key1':1, 'key2':2} 
 In [38]: adict={'key1':1, 'key2':2, 'key3':3} In [41]: dict((k,adict[k]) for k in ('key1','key2','key99') if k in adict) Out[41]: {'key1': 1, 'key2': 2} 

在Python3(或Python2.7或更高版本)中,您也可以使用字典理解 :

 >>> {k:adict[k] for k in ('key1','key2','key99') if k in adict} {'key2': 2, 'key1': 1} 
 dict(filter(lambda i:i[0] in validkeys, d.iteritems()))