Python 遍历树状字典 & 取值

有一个树状字典,结构如下

A = {  'LINE': 12561,  'CLASS': 'TYPEDEF',  'TYPE': 'STRUCT',  'OFFSET': nan,  'SIZE': 12047,  'Member': {    'A1': {'LINE': 12562,           'CLASS': 'MEMBER',           'TYPE': 'U_LONG',           'OFFSET': 0,           'SIZE': 4},    'A2': {'LINE': 12566,           'CLASS': 'MEMBER',           'TYPE': 'STRUCT',           'OFFSET': 12,           'SIZE': 387,           'Member': {             'A2_1': {               'LINE': 12516,               'CLASS': 'MEMBER',               'TYPE': 'ARRAY',               'OFFSET': 0,               'SIZE': 128,               'Member': {                 'A2_1_1': {                   'LINE': 13320,                   'CLASS': 'TYPEDEF',                   'TYPE': 'UNION',                   'OFFSET': 0,                   'SIZE': 2},                 'A2_1_2': {                   'LINE': 13320,                   'CLASS': 'TYPEDEF',                   'TYPE': 'UNION',                   'OFFSET': 2,                   'SIZE': 2}}}}}}}

每个key里面固定会有'LINE'、'CLASS'、'TYPE'、'OFFSET'、'SIZE'五个key及对应的value,若有'Member'的话代表还有有下一层
目标为遍历所有Member里的key,取出所有的OFFSET值并print出来,结果希望如下

A : 0A1 : 0A2 : 12 A2_1 : 0                A2_1_1 : 0                A2_1_2 : 2

其实就是基本的树状遍历,只是写成递迴就很容易搞混,因此写下来记录一下

def getList(Dict,aboveName = None,layer = 0):    for i in range(layer):        print("\t",end='')    print(aboveName,":",Dict['OFFSET'])      for k in Dict.keys():        if k =='Member':            for kk in Dict['Member'].keys():                getList(Dict = Dict['Member'][kk],                        aboveName = kk,                        layer = layer + 1)

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章