2012-11-21 101 views
2

我有一個如下所示的嵌套字典。我如何扁平化,以便每個botten級別都有一排列表作爲列表?如何在Python 2.7x中拼合嵌套字典

e.g

[[en,Chome,ChromeOS,null,180, '0', '0', '0', '0', 
    [en, Linux,null,27868, '0', '0', '0', '0'], 
    ... 
] 

輸入

test = {u'en': {'Chrome': {'ChromeOS': {u'null': [180, '0', '0', '0', '0']}, 
        'Linux': {u'null': [27868, '0', '0', '0', '0']}, 
        'Macintosh': {u'null': [330991, '0', '0', '0', '0']}, 
        'Windows': {u'null': [3296819, '0', '0', '0', '0']}}, 
     'Firefox': {'Linux': {u'null': [18076, '0', '0', '0', '0']}, 
        'Macintosh': {u'null': [168444, '0', '0', '0', '0']}, 
        'Windows': {u'null': [1517775, '0', '0', '0', '0']}}, 
     'Konqueror': {'Linux': {u'null': [9, '0', '0', '0', '0']}}, 
     'Microsoft Internet Explorer': {'Windows': {u'null': [3060154, 
                   '0', 
                   '0', 
                   '0', 
                   '0']}}, 
     'Opera': {'Linux': {u'null': [2274, '0', '0', '0', '0']}, 
        'Macintosh': {u'null': [1573, '0', '0', '0', '0']}, 
        'Windows': {u'null': [38589, '0', '0', '0', '0']}}, 
     'Opera Mobile': {'Linux': {u'null': [5807, '0', '0', '0', '0']}, 
          'Windows': {u'null': [1, '0', '0', '0', '0']}}, 
     'Safari': {'Blackberry': {u'null': [530, '0', '0', '0', '0']}, 
        'Linux': {u'null': [292862, '0', '0', '0', '0']}, 
        'Macintosh': {u'null': [618641, '0', '0', '0', '0']}, 
        'Windows': {u'null': [36359, '0', '0', '0', '0']}}, 
     'SeaMonkey': {'Linux': {u'null': [120, '0', '0', '0', '0']}, 
         'Macintosh': {u'null': [224, '0', '0', '0', '0']}, 
         'Windows': {u'null': [1890, '0', '0', '0', '0']}}, 
     'WOSBrowser': {'Linux': {u'null': [687, '0', '0', '0', '0']}}, 
     'null': {'null': {u'null': [15559, '0', '0', '0', '0']}}}} 
+0

這是來自json嗎? – ninMonkey

回答

8
def flatten_dict(d): 
    for k,v in d.items(): 
     if isinstance(v, dict): 
      for item in flatten_dict(v): 
       yield [k]+item 
     else: 
      yield v 

flattened = list(flatten_dict(test)) 
0

如果終端節點不是列表中,那麼應該 「產量[V]」 代替 「產率V」。