Python 提取与其他字典匹配的字典数据

Python 提取与其他字典匹配的字典数据,python,dictionary,Python,Dictionary,我有两本词典,一本是原著,另一本是参考书。我想把引用的dict键和原始的dict键匹配起来,然后从原始的dict键中提取所有这些键,这些值都存在于引用中。 比如说 original_dict = { 'a': { '1': [1, 2, 3, 4, 5] }, 'b': { '1': { 'A': [1, 2, 3, 4] } }, 'c': { '3': [1]

我有两本词典,一本是原著,另一本是参考书。我想把引用的dict键和原始的dict键匹配起来,然后从原始的dict键中提取所有这些键,这些值都存在于引用中。 比如说

original_dict = {
    'a': {
        '1': [1, 2, 3, 4, 5]
    },
    'b': {
        '1': {
            'A': [1, 2, 3, 4]
        }
    },
    'c': {
        '3': [1]
    }
}
还有一本参考字典

reference_dict = {
    'a': {
        '2': [1, 2, 3]
    },
    'b': {
        '1': {
            'A': []
        }
    },
    'c': {
        '3': []
    }
}
这是摘录的字典

extracted_dict = {
    'b': {
        '1': {
            'A': [1, 2, 3, 4]
        }
    },
    'c': {
        '3': [1]
    }
}

在这里,您可能已经注意到,我不关心引用dict的值。我想要的只是原始dict的值。

您可以使用递归来实现这一点:

def合并(值dict,键dict):
ret={}
对于键,在键\ dict.items()中细分:
如果输入值_dict:
如果不存在(值[key],dict):
#我们找到了一个值,所以不要继续递归
ret[key]=值\u dict[key]
其他:
#找到另一个dict以便合并子片段
合并=合并(值\u dict[key],子ct)
如果len(合并)>0:
ret[key]=合并
回程网
合并(原始记录、参考记录)

我不确定是否100%理解您的问题,但这可能是一个解决方案。 我们使用相关的
,并将它们放在列表中,以便在
上使用它们

new_lst = []

for i in original_dict.keys():
    new_lst.append(original_dict[i])
reference_dict.clear()
for i in new_lst:
    reference_dict.update(i)

print(reference_dict)

到目前为止你试过什么?@abhilb我发现可以检查两本字典是否相等。但下一步我要做的是提取那些相同的密钥啊!这是提取数据。但是有一个小问题。它忽略了大多数父键。哦,让我检查并编辑。