Python 提取与其他字典匹配的字典数据
我有两本词典,一本是原著,另一本是参考书。我想把引用的dict键和原始的dict键匹配起来,然后从原始的dict键中提取所有这些键,这些值都存在于引用中。 比如说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]
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我发现可以检查两本字典是否相等。但下一步我要做的是提取那些相同的密钥啊!这是提取数据。但是有一个小问题。它忽略了大多数父键。哦,让我检查并编辑。