1 ''' 把一个字典扁平化''' 2 3 src = {'a':{'b':1,'c':2},'d':{'e':3,'f':{'g':4}}} # dest = {'a.b':1,'a.c':2,'d.e':3,'d.f.g':4} 4 # dest = {} 5 6 def faltmat(src:dict, key='', dest={}): 7 for k, v in src.items(): 8 if isinstance(v, dict): 9 key = key + k + '.' 10 faltmat(v, key) 11 key = '' 12 else: 13 dest[key + k] = v 14 return dest 15 16 print(faltmat(src)) 17 18 19 def falmat(src): 20 def _faltmat(src:dict, key='', dest={}): 21 for k, v in src.items(): 22 if isinstance(v, dict): 23 key = key + k + '.' 24 faltmat(v, key) 25 key = '' 26 else: 27 dest[key + k] = v 28 return dest 29 return _faltmat 30 print(faltmat(src)) 31 32 封装 33 def falmat(src): 34 dest={} 35 def _faltmat(src:dict, key='' ): 36 for k, v in src.items(): 37 if isinstance(v, dict): 38 key = key + k + '.' 39 faltmat(v, key) 40 key = '' 41 else: 42 dest[key + k] = v 43 44 _faltmat(src) 45 return dest 46 47 print(faltmat(src))
字典的扁平化 主要考虑的 是 递归的使用,要分清楚递归次数,
最主要的是结束条件,上题,结束条件是通过 v 是否是 字典,
如果不是,就进入else条件。