2016-04-21 62 views
1

我是Python新手,所以请在我学习的时候忍受一下。过滤出两个嵌套字典之间不共享的键

我有两个defaultdicts,一个嵌套的值:

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}} 

我尝试使用here所述的方法,但无法使其适应这种情况。

预先感谢您!

回答

1

您可以嵌套字典解析解决这个问题:

>>> 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}} 

在这种状态下,虽然,该解决方案不能扩展为任意嵌套性水平。

+0

谢谢,这既回答了我的问题,也帮助我更好地理解了列表理解。 – Archimeow