有没有办法访问对象的更深层对象?
我使用循环来实现期望的结果:
obj = { 'level_one': { 'level_two': {} } }
for k,v in obj.items():
for k,v in v.items():
print v
对我而言,这是一种积极的做法。还有其他方法吗?键是dinamically,所以我不能使用obj['level_one']['level_two']
感谢。
答案 0 :(得分:0)
如果dict可以有任意数量的嵌套,这看起来像一个递归解决方案。
def deep_dict_loop(obj):
for k in obj:
if isinstance(obj[k], dict):
yield from deep_dict_loop(obj[k])
else:
yield obj[k]
for value in deep_dict_loop({ 'level_one': { 'level_two': {'foo': 'bar'} } }):
print value # prints 'bar'
答案 1 :(得分:0)
此代码将为您提供一个迭代器,其中包含内部dicts的所有值。
import itertools
values = itertools.chain.from_ierable({v.values() for v in obj.values()})
你可以在values
上进行迭代,或者它不方便你可以强制将其转换为列表:
list(values)