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下利用OpenCV来旋转图像的教程
Apr 16 Python
Python学习笔记整理3之输入输出、python eval函数
Dec 14 Python
Python实现Linux命令xxd -i功能
Mar 06 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
Jan 12 Python
Python使用xlwt模块操作Excel的方法详解
Mar 27 Python
matplotlib subplots 设置总图的标题方法
May 25 Python
Python操作mongodb数据库的方法详解
Dec 08 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
May 27 Python
对PyQt5中树结构的实现方法详解
Jun 17 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
keras中的卷积层&池化层的用法
May 22 Python
python各种excel写入方式的速度对比
Nov 10 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图片处理类 phpThumb参数用法介绍
2012/03/11 PHP
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
2016/01/25 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
2016/03/25 PHP
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
PHP串行化与反串行化实例分析
2016/12/27 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
2018/04/12 PHP
基于jquery的一个图片hover的插件
2010/04/24 Javascript
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
一个简单的js动画效果代码
2010/07/20 Javascript
新手常遇到的一些jquery问题整理
2010/08/16 Javascript
Jquery 表格合并的问题分享
2011/09/17 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
2013/06/08 Javascript
JS获取农历日期具体实例
2013/11/14 Javascript
jquery实现点击页面计算点击次数
2015/01/23 Javascript
JS实现图片产生波纹一样flash效果的方法
2015/02/27 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
js拖拽功能实现代码解析
2016/11/28 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
详解RequireJS按需加载样式文件
2017/04/12 Javascript
JavaScript使用readAsDataURL读取图像文件
2017/05/10 Javascript
全选复选框JavaScript编写小结(附代码)
2017/08/16 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
jQuery实现图片切换效果
2020/10/19 jQuery
Python3通过Luhn算法快速验证信用卡卡号的方法
2015/05/14 Python
关于Python中的向量相加和numpy中的向量相加效率对比
2019/08/26 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
python 写一个性能测试工具(一)
2020/10/24 Python
Finishline官网:美国一家领先的运动品牌鞋类、服装零售商
2016/07/20 全球购物
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
The North Face意大利官网:服装、背包和鞋子
2020/06/17 全球购物
一道Delphi面试题
2016/10/28 面试题
2015年高校辅导员工作总结
2015/04/20 职场文书
人工作失职检讨书
2015/05/05 职场文书
秋季运动会加油词
2015/07/18 职场文书
2016幼儿园教师节新闻稿
2015/11/25 职场文书