过滤掉两个嵌套字典之间不共享的键
Filtering out keys the are not shared between two nested dictionaries
我是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 过滤为 return 只是 d2 中存在的键的键值对:
{'a': {'b1': 12}, 'ff': {'b1': 32, 'h1': 2}}
我尝试使用描述的方法 here 但无法适应这种情况。
提前致谢!
你可以用嵌套的字典推导来解决:
>>> 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}}
虽然在这种状态下,解决方案不会针对任意嵌套级别进行扩展。
我是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 过滤为 return 只是 d2 中存在的键的键值对:
{'a': {'b1': 12}, 'ff': {'b1': 32, 'h1': 2}}
我尝试使用描述的方法 here 但无法适应这种情况。
提前致谢!
你可以用嵌套的字典推导来解决:
>>> 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}}
虽然在这种状态下,解决方案不会针对任意嵌套级别进行扩展。