把一个字典扁平化

 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条件。
为什么要坚持,想一想当初!
原文地址:https://www.cnblogs.com/JerryZao/p/9574880.html