搜索

首页  >  问答  >  正文

python获取dict所有value

如:

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

返回的是:

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

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

滿天的星座滿天的星座2755 天前635

全部回复(2)我来回复

  • 巴扎黑

    巴扎黑2017-05-18 10:56:30

    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) 替换

    回复
    0
  • phpcn_u1582

    phpcn_u15822017-05-18 10:56:30

    貌似只能遍历

    # coding: utf-8
    
    p={
        '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(p)

    回复
    0
  • 取消回复