如何检查字典是否包含字典?

时间:2015-04-10 16:12:23

标签: python

如果在我的词典中包含另一个词典,我正在寻找一个返回true的函数。

for k in dictObj.iteritems():
    if k contain dictionary return false
    else return true

有直接的方法吗?

2 个答案:

答案 0 :(得分:6)

您可以遍历(因此可以通过dict.itervalues()dict.values(),具体取决于您的Python版本),并使用isinstance()对每个值进行测试。将其与any() function和生成器表达式相结合,以提高效率:

return any(isinstance(v, dict) for v in dictObj.itervalues())

演示:

>>> dictObj = {'foo': 'bar'}
>>> any(isinstance(v, dict) for v in dictObj.itervalues())
False
>>> dictObj = {'foo': {'spam': 'eggs'}}
>>> any(isinstance(v, dict) for v in dictObj.itervalues())
True

如果要检测任何映射类型(不仅仅是词典),您可以测试collections.Mapping而不是dict;这也可以让你处理任何替代的映射实现。

答案 1 :(得分:3)

你正在寻找类似的东西

def has_inner_dict(d):
    for v in d.values():
        if isinstance(v, dict):
            return True
    return False