2016-07-20 87 views
2

在Python中,如何查找字典是否包含其他字典中的数据。python如何查找字典是否包含其他字典中的数据

我的数据被分配给一个变量这样

childDict = { 
    "assignee" : { 
    "first":"myFirstName", 
    "last":"myLastName" 
    }, 
    "status" : "alive" 
} 

我有一个名为masterDict类似的层次,但在它的一些更多的数据的另一个解释。

masterDict = { 
    "description": "sample description", 
    "assignee" : { 
    "first" : "myFirstName", 
    "last" : "myLastName" 
    }, 
    "status" : "dead", 
    "identity": 1234 
} 

现在我需要通读childDict并确定masterDict是否具有这些值。

数据嵌套,它可以有更多的深度。 在上面的例子中,由于状态不匹配,它应该返回false,否则应该返回true。我如何比较它们。我是python的新手。谢谢你的帮助。

回答

2

请注意,您的字典中有一些错误(缺少逗号)。

childDict1 = { 
    "assignee": { 
     "first":"myFirstName", 
     "last":"myLastName" 
    }, 
    "status" : "alive" 
} 

childDict2 = { 
    "assignee": { 
     "first":"myFirstName", 
     "last":"myLastName" 
    }, 
    "status" : "dead" 
} 

masterDict = { 
    "description": "sample description", 
    "assignee": { 
     "first":"myFirstName", 
     "last":"myLastName" 
    }, 
    "status": "dead", 
    "identity": 1234 
} 

def contains_subdict(master, child): 
    if isinstance(master, dict) and isinstance(child, dict): 
     for key in child.keys(): 
      if key in master: 
       if not contains_subdict(master[key], child[key]): 
        return False 
     return True 
    else: 
     if child == master: 
      return True 
     return False 

print contains_subdict(masterDict, childDict1) 
print contains_subdict(masterDict, childDict2) 

运行代码产生输出:

False 
True 
+0

由于Fhaab。有效!不知何故,我试图捕捉密钥的路径来比较主字典。像masterDict [“assignee”] [“first”] == childDictValue。所以,我在那里误导了。这个解决方案很好。再次感谢。 – user2406718

相关问题