我正在寻找一个函数,如果我的字典中包含另一个字典,该函数返回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
;这也可以让您处理任何其他映射实现。