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

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


有没有简单的方法可以做到这一点?

最佳答案

您可以遍历这些值(根据您的Python版本,遍历dict.itervalues()dict.values()),然后使用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;这也可以让您处理任何其他映射实现。

10-04 17:07