python - 过滤掉两个嵌套字典之间不共享的键

标签 python dictionary defaultdict

我是Python新手,所以请耐心等待我的学习。

我有两个默认字典,其中一个带有嵌套值:

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但无法使其适应这种情况。

提前谢谢您!

最佳答案

您可以使用嵌套的字典理解来解决它:

>>> 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 - 过滤掉两个嵌套字典之间不共享的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36781981/

相关文章:

python - 读取页面并使用 Python 中的 minidom.parse 或 minidom.parseString 解析它?

python - 使用 PySpark 中的列值组合查找最小和最大范围

java - 映射现实世界的城市并计算距离 Java

c# - 试图覆盖 ComboBox 的字典 ToString

python - "RuntimeError: dictionary changed size during iteration"但在循环中没有改变

python - 如何将 defaultdict(Set) 转换为 defaultdict(list)?

python - 如何在seaborn lineplot上显示置信区间(误差带)

python - 使用 Python 使用 PIL 获取特定窗口的打印屏幕

python - 如何制作具有多个列表的字典

python - 如何连接或组合具有重叠键的默认字典的两个默认字典?