python获取dict所有value

如:

div={
    'a':'aa',
    'b':{
    'b':'bb'
    }
}
print(dict(div).values())

返回的是:

dict_values(['aa', {'b': 'bb'}])

而想要的是aa和bb。应该怎么写,谢谢了

阅读 8.8k
2 个回答
def values(d):
    for v in d.values():
        if isinstance(v, dict):
            for _ in values(v): yield _
        else:
            yield v

data = values({1:1,2:{2:2,3:{3:3,4:4}}})

for v in data:
    print(v)

# 1 2 3 4

如果使用python 3.3+,for _ in values(v): yield _ 可用 yield from values(v) 替换

貌似只能遍历

# coding: utf-8

div={
    'a':'aa',
    'b':{
        'b':'bb',
        'c': {
            'c': 'cc',
            'd': {
                'd': 'dd'
            }
        }
    }
}

def f(d):
    nl = []
    for _ in d.values():
        nl += f(_) if isinstance(_, dict) else [_]
    return nl

print f(div)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题