Python构造自定义方法来美化字典结构输出的示例


Posted in Python onJune 16, 2016

示例:

d = { "root": { "folder2": { "item2": None, "item1": None }, "folder1": { "subfolder1": { "item2": None, "item1": None }, "subfolder2": { "item3": None } } } }

美观输出是:

Python构造自定义方法来美化字典结构输出的示例

观察一下特点:
1.同一level的key左对齐,即indent相同。
2.在,号后换行。
3.如果value是字典,即嵌套字典,则嵌套字典在下一个level,每一个level的key的indent都不一样。

思路分析:
这是个"拼接字符串"问题,元素有""{}:,\n和空格indent。
遍历一个个(k, v)键值对,拼接yield起来,遇到嵌套字典就递归,即递归+yield。

上代码。

#coding=utf-8 
def pretty_dict(obj, indent=' '): 
 def _pretty(obj, indent): 
  for i, tup in enumerate(obj.items()): 
   k, v = tup 
   #如果是字符串则拼上"" 
   if isinstance(k, basestring): k = '"%s"'% k 
   if isinstance(v, basestring): v = '"%s"'% v 
   #如果是字典则递归 
   if isinstance(v, dict): 
    v = ''.join(_pretty(v, indent + ' '* len(str(k) + ': {')))#计算下一层的indent 
   #case,根据(k,v)对在哪个位置确定拼接什么 
   if i == 0:#开头,拼左花括号 
    if len(obj) == 1: 
     yield '{%s: %s}'% (k, v) 
    else: 
     yield '{%s: %s,\n'% (k, v) 
   elif i == len(obj) - 1:#结尾,拼右花括号 
    yield '%s%s: %s}'% (indent, k, v) 
   else:#中间 
    yield '%s%s: %s,\n'% (indent, k, v) 
 print ''.join(_pretty(obj, indent)) 
 
d = { "root": { "folder2": { "item2": None, "item1": None }, "folder1": { "subfolder1": { "item2": None, "item1": None }, "subfolder2": { "item3": None } } } } 
pretty_dict(d)
Python 相关文章推荐
Python实现获取操作系统版本信息方法
Apr 08 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
Sep 05 Python
运动检测ViBe算法python实现代码
Jan 09 Python
Python selenium抓取微博内容的示例代码
May 17 Python
用Python3创建httpServer的简单方法
Jun 04 Python
判断python对象是否可调用的三种方式及其区别详解
Jan 31 Python
关于ZeroMQ 三种模式python3实现方式
Dec 23 Python
Python面向对象之多态原理与用法案例分析
Dec 30 Python
python代码如何实现余弦相似性计算
Feb 09 Python
利用python中集合的唯一性实现去重
Feb 11 Python
pandas数据处理之绘图的实现
Jun 15 Python
python空元组在all中返回结果详解
Dec 15 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
Jun 16 #Python
详解Python中 __get__和__getattr__和__getattribute__的区别
Jun 16 #Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
Jun 16 #Python
Python黑魔法@property装饰器的使用技巧解析
Jun 16 #Python
Python实现类似jQuery使用中的链式调用的示例
Jun 16 #Python
浅析Python中else语句块的使用技巧
Jun 16 #Python
python基础教程之分支、循环简单用法
Jun 16 #Python
You might like
用PHP实现维护文件代码
2007/06/14 PHP
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
JS获取checkbox的个数简单实例
2016/08/19 Javascript
原生javascript实现的全屏滚动功能示例
2017/09/19 Javascript
使用D3.js构建实时图形的示例代码
2018/08/28 Javascript
vue根据进入的路由进行原路返回的方法
2018/09/26 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python逐行读取文件内容的三种方法
2014/01/20 Python
使用Python抓取模板之家的CSS模板
2015/03/16 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
Python continue继续循环用法总结
2018/06/10 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2019/03/05 Python
Pandas之groupby( )用法笔记小结
2019/07/23 Python
python图片二值化提高识别率代码实例
2019/08/24 Python
python实现贪吃蛇双人大战
2020/04/18 Python
Python使用grequests并发发送请求的示例
2020/11/05 Python
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
新闻记者实习自我鉴定
2013/09/19 职场文书
自我评价怎么写好呢?
2013/12/05 职场文书
财务会计大学生自我评价
2014/04/09 职场文书
科学育儿宣传标语
2014/10/08 职场文书
综合素质自我评价评语
2015/03/06 职场文书
检讨书格式范文
2015/05/07 职场文书
晚会主持人开场白台词
2015/05/28 职场文书
休假证明书
2015/06/24 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书
python中的None与NULL用法说明
2021/05/25 Python
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle