访问更深层的对象

时间:2016-11-09 16:01:10

标签: python dictionary

有没有办法访问对象的更深层对象?

我使用循环来实现期望的结果:

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']

感谢。

2 个答案:

答案 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)