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条件。