zoukankan      html  css  js  c++  java
  • 把一个字典扁平化

     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条件。
    为什么要坚持,想一想当初!
  • 相关阅读:
    虚拟机Linux5下安装MyEclipse2014的步骤
    鉴赏
    Linux环境下安装WebStorm
    Bootstrap模态框
    AngularJs
    按钮颜色
    虚拟机里的weblogic之后怎样进入
    搭建GlusterFS文件系统
    邮件服务器fixpost服务(1)
    unbound域名解析
  • 原文地址:https://www.cnblogs.com/JerryZao/p/9574880.html
Copyright © 2011-2022 走看看