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处理中文编码和判断编码示例
Feb 26 Python
python中list常用操作实例详解
Jun 03 Python
总结Python编程中函数的使用要点
Mar 20 Python
python中通过预先编译正则表达式提高效率
Sep 25 Python
Python pymongo模块常用操作分析
Sep 01 Python
python 使用re.search()筛选后 选取部分结果的方法
Nov 28 Python
Python微信操控itchat的方法
May 31 Python
Python爬虫使用代理IP的实现
Oct 27 Python
python将三维数组展开成二维数组的实现
Nov 30 Python
基于python 等频分箱qcut问题的解决
Mar 03 Python
Python类super()及私有属性原理解析
Jun 15 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
Feb 22 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 array_flip() 删除重复数组元素专用函数
2010/05/16 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
2014/08/19 PHP
JS简单实现登陆验证附效果图
2013/11/19 Javascript
JQuery的ready函数与JS的onload的区别详解
2013/11/21 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
javascript如何创建对象
2016/08/29 Javascript
JavaScript每天必学之事件
2016/09/18 Javascript
jQuery 如何实现一个滑动按钮开关
2016/12/01 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
微信小程序个人中心的列表控件实现代码
2020/04/26 Javascript
Python实现抓取页面上链接的简单爬虫分享
2015/01/21 Python
Python如何获取系统iops示例代码
2016/09/06 Python
python将文本中的空格替换为换行的方法
2018/03/19 Python
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
Python输出\u编码将其转换成中文的实例
2018/12/15 Python
python3.x实现base64加密和解密
2019/03/28 Python
基于树莓派的语音对话机器人
2019/06/17 Python
new_zeros() pytorch版本的转换方式
2020/02/18 Python
Python Numpy 控制台完全输出ndarray的实现
2020/02/19 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
学python需要去培训机构吗
2020/07/01 Python
golang/python实现归并排序实例代码
2020/08/30 Python
详解python with 上下文管理器
2020/09/02 Python
python time()的实例用法
2020/11/03 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
2021/01/05 Python
RetroStage德国:复古服装
2019/02/03 全球购物
物流专业大学生的自我鉴定
2013/11/13 职场文书
小学生环保演讲稿
2014/04/25 职场文书
2014年党课学习材料
2014/05/11 职场文书
小学生清明节演讲稿
2014/09/05 职场文书
公安领导班子四风问题个人整改措施思想汇报
2014/10/09 职场文书
mysql创建存储过程及函数详解
2021/12/04 MySQL
Spring依赖注入多种类型数据的示例代码
2022/03/31 Java/Android
二维码条形码生成的JavaScript脚本库
2022/07/07 Javascript