我正在寻找一个函数,如果我的字典中包含另一个字典,它会返回 true。
for k in dictObj.iteritems():
if k contain dictionary return false
else return true
有没有直接的方法来做到这一点?
请您参考如下方法:
您可以遍历 values(因此遍历 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;这也可以让您处理任何替代映射实现。
