我想检查嵌套字典中值的存在,如下所示:
>>> x = {1:{'a':'b'}}
>>> 'a' in x.values()
False
我仍然无法得到它。检查x内是否存在“ a”的正确方法是什么?
答案 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])
警告,非常大的树木可能会炸毁树木