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] = v14 return dest15 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] = v28 return dest29 return _faltmat30 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] = v43 44 _faltmat(src)45 return dest46 47 print(faltmat(src))
字典的扁平化 主要考虑的 是 递归的使用,要分清楚递归次数, 最主要的是结束条件,上题,结束条件是通过 v 是否是 字典, 如果不是,就进入else条件。