如果在我的词典中包含另一个词典,我正在寻找一个返回true的函数。
for k in dictObj.iteritems():
if k contain dictionary return false
else return true
有直接的方法吗?
答案 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