Python 筛选出两个嵌套字典之间不共享的键

Python 筛选出两个嵌套字典之间不共享的键,python,dictionary,defaultdict,Python,Dictionary,Defaultdict,我是python的新手,所以请在我学习的过程中耐心等待 我有两个defaultdict,一个带有嵌套值: d1 = defaultdict(dd_list) d1 = {'a': {'b1': 12, 'c21': 41}, 'ff': {'h1': 2, 'b1': 32}} d2 = defaultdict(dd_list) d2 = {'a': 22, 'b1': 77, 'g8': 10, 'h1': 37} 我想筛选d1,以仅返回d2中存在的键的键值对: {'a': {'b1':

我是python的新手,所以请在我学习的过程中耐心等待

我有两个defaultdict,一个带有嵌套值:

d1 = defaultdict(dd_list)
d1 = {'a': {'b1': 12, 'c21': 41}, 'ff': {'h1': 2, 'b1': 32}}

d2 = defaultdict(dd_list)
d2 = {'a': 22, 'b1': 77, 'g8': 10, 'h1': 37}
我想筛选d1,以仅返回d2中存在的键的键值对:

 {'a': {'b1': 12}, 'ff': {'b1': 32, 'h1': 2}}
我尝试使用描述的方法,但无法使其适应这种情况


提前谢谢你

您可以通过嵌套字典理解来解决此问题:


不过,在这种状态下,解决方案不会扩展到任意嵌套级别。

谢谢,这既回答了我的问题,又帮助我更好地理解列表理解。
>>> d1 = {'a': {'b1': 12, 'c21': 41}, 'ff': {'h1': 2, 'b1': 32}}
>>> d2 = {'a': 22, 'b1': 77, 'g8': 10, 'h1': 37}
>>> 
>>> print({key: {inner_key: inner_value for inner_key, inner_value in value.items() if inner_key in d2}
...        for key, value in d1.items()})
{'a': {'b1': 12}, 'ff': {'h1': 2, 'b1': 32}}