嵌套字典中值的存在

时间:2019-04-08 20:19:41

标签: python python-3.x

我想检查嵌套字典中值的存在,如下所示:

>>> x = {1:{'a':'b'}}
>>> 'a' in x.values()
False

我仍然无法得到它。检查x内是否存在“ a”的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

您的示例词典仅具有一个键和一个值,即{'a':'b'}

该值是字典,因此它与'a'的类型不同,后者是一个字符串:不匹配。

要对此进行匹配,您需要做更多的工作:

>>> any('a' in v for v in x.values())
True
>>> 

循环会检查'a'作为x字典值的键(这也是字典包含1个以上元素的一般情况)

答案 1 :(得分:2)

可将嵌套词典视为树。您可以使用广度优先搜索之类的方法

def bfs(key, tree): 
    if not isinstance(tree, dict):
        return False # this isn't a subtree, it's a leaf
    if key in tree:
        return True
    else:
        subtrees = [key for key in tree if isinstance(key, dict)]
        return any([bfs(key, subtree) for subtree in subtrees])

警告,非常大的树木可能会炸毁树木