博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
把一个字典扁平化
阅读量:4325 次
发布时间:2019-06-06

本文共 1308 字,大约阅读时间需要 4 分钟。

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

 

转载于:https://www.cnblogs.com/JerryZao/p/9574880.html

你可能感兴趣的文章
小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_9、SpringBoot基础HTTP其他提交方法请求实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_12、SpringBoot2.x文件上传实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_11、SpringBoot2.x目录文件结构讲解...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第三节SpringBoot热部署devtool和配置文件自动注入实战_15、SpringBoot2.x配置文件讲解...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_13、jar包方式运行web项目文件上传和访问...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_17、SpringBootTest单元测试实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第三节SpringBoot热部署devtool和配置文件自动注入实战_14、SpringBoot2.x使用Dev-tool热部署...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_19、SpringBoot个性化启动banner设置debug日志...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第三节SpringBoot热部署devtool和配置文件自动注入实战_16、注解配置文件自动映射到属性和实体类实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_20、SpringBoot2.x配置全局异常实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_18、SpringBoot测试进阶高级篇之MockMvc讲解...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第5节 SpringBoot部署war项目到tomcat9和启动原理讲解_23、SpringBoot2.x启动原理概述...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_21、SpringBoot2.x配置全局异常返回自定义页面...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_32..SpringBoot2.x持久化数据方式介绍...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_34、SpringBoot整合Mybatis实操和打印SQL语句...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_36、SpringBoot整合mybatis之事务处理实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_38、源码编译安装Redis4.x...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_33、SpringBoot2.x整合Mybatis3.x注解实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_35、事务介绍和常见的隔离级别,传播行为...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_40、Redis工具类封装讲解和实战...
查看>>