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处理RSS、ATOM模块FEEDPARSER介绍
Feb 18 Python
python实现读取命令行参数的方法
May 22 Python
Python变量和字符串详解
Apr 29 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
May 19 Python
Python字符串拼接六种方法介绍
Dec 18 Python
Python requests库用法实例详解
Aug 14 Python
浅谈Python traceback的优雅处理
Aug 31 Python
python itchat实现调用微信接口的第三方模块方法
Jun 11 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
Aug 30 Python
Python线程指南分享
Nov 19 Python
python对指定字符串逆序的6种方法(小结)
Apr 02 Python
Python 求向量的余弦值操作
Mar 04 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 preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
无JS,完全php面向过程数据分页实现代码
2012/08/27 PHP
PHP 获取文件权限函数介绍
2013/07/11 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
2014/10/29 PHP
Symfony2学习笔记之控制器用法详解
2016/03/17 PHP
修复IE9&safari 的sort方法
2011/10/21 Javascript
JS获取鼠标坐标的实例方法
2013/07/18 Javascript
JS Date函数整理方便使用
2013/10/23 Javascript
NodeJS中Buffer模块详解
2015/01/07 NodeJs
javascript实时获取鼠标坐标值并显示的方法
2015/04/30 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
2015/07/05 Javascript
JS实现选中当前菜单后高亮显示的导航条效果
2015/10/15 Javascript
学习JavaScript事件流和事件处理程序
2016/01/25 Javascript
纯js代码制作的网页时钟特效【附实例】
2016/03/30 Javascript
前端js实现文件的断点续传 后端PHP文件接收
2016/10/14 Javascript
vue项目中使用ueditor的实例讲解
2018/03/05 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
小程序实现tab标签页
2020/11/16 Javascript
Python实现代码统计工具(终极篇)
2016/07/04 Python
用python与文件进行交互的方法
2018/03/01 Python
Python线性拟合实现函数与用法示例
2018/12/13 Python
Python3爬虫里关于代理的设置总结
2020/07/30 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
巴黎卡诗加拿大官网:Kérastase加拿大
2018/11/12 全球购物
西雅图电动自行车公司:Rad Power Bikes
2020/02/02 全球购物
学生档案自我鉴定
2013/10/07 职场文书
满月酒主持词
2014/03/27 职场文书
中药学专业求职信
2014/05/31 职场文书
人事任命书怎么写
2014/06/05 职场文书
纪检干部对照检查材料
2014/08/22 职场文书
2015年校务公开工作总结
2015/05/26 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书
唤醒紫霞仙子,携手再游三界!大话手游X《大话西游》电影合作专属剧情任务
2022/04/03 其他游戏