飘逸的python - 实现一个pretty函数美丽的输出嵌套字典
2017-05-02 20:12
447 查看
演示样例:
d = { "root": { "folder2": { "item2": None, "item1": None }, "folder1": { "subfolder1": { "item2": None, "item1": None }, "subfolder2": { "item3": None } } } }
美观输出是:
观察一下特点:
1.同一level的key左对齐,即indent同样
2.在,号后换行
3.假设value是字典。即嵌套字典,则嵌套字典在下一个level,每个level的key的indent都不一样
思路分析:
这是个"拼接字符串"问题,元素有""{}:,\n和空格indent.
遍历一个个(k, v)键值对,拼接yield起来,遇到嵌套字典就递归
即递归+yield
上代码。
d = { "root": { "folder2": { "item2": None, "item1": None }, "folder1": { "subfolder1": { "item2": None, "item1": None }, "subfolder2": { "item3": None } } } }
美观输出是:
观察一下特点:
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 - 实现一个pretty函数漂亮的输出嵌套字典
- 用一个函数实现将一行字符串中最短的单词输出。此行字符串从主函数传递给该函数。假设字符串中包含的单词以空格作为分隔符号,例如”Asia Games 2010 is held in GuangZhou.”,其中最短的单词是”is”和”in”。
- C#--第四周实验--任务3--定义一个人员类Cperson,在此基础上派生出学生类CStudent和教师类CTeacher,实现输入输出功能的成员函数。
- 用递归的思想写编写一个函数reverse_string(char * string)实现字符串反向输出和反向排列
- }1.字符串替换空格:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“we are happy.”,则输出“we%20are%20happy.”。
- 输入一个表示整数的字符串,把该字符串转换成整数并输出(实现atoi函数功能)
- C语言:实现一个函数,打印乘法口诀表,如:输入9,输出9*9口诀表
- python生成一个字典的嵌套
- (用指针方法处理)有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。编写一个函数实现上述功能,在主函数中输入n个整数,并输出调整后的n个数
- popen函数实现捕获shell里命令的输出--外加自己的一个小接口函数
- 假如现在有一堆长度大于3小于9的电话号码,用座机呼叫,如果出现这样的号码【123和12345】那么12345将永远不会被拨出,因为拨到123的时候电话已经呼出了,试写一个函数输出所有不能被呼出的电话号码(java实现)
- 写一个函数,输出字符串中字符的字典
- 实现一个函数,传递一个有10个已经排好序的整形元素数组(数组大小实际为11)中,将一个指定的值按顺序插入,并在main函数中将插入后的数组输出。
- 编写程序:从键盘上输入若干个整数(以输入-1作为结束标识),输出这些数中的最大值和最小值,要求编写一个函数实现最大值和最小值的求取。
- 编写一个函数 输入一串字符 函数实现反转输出(图)
- 编程:用java 语言实现,输入一个数,就相应地输出的几维数组!||用1、2、2、3、4、5这六个数字,用java写一个函数,打印出所有不同的排列,要求:"4"不能在第三位,"3"与"5"不能相连
- 编写一个程序,定义一个职工类,输入3个职工的编号、姓名、工资和年龄, 类中的成员函数实现输入、输出,在主函数中定义对象,并计算输出3个职工的平均工资。
- python: 怎样写一个函数把名字大写并变成下面这样——字典与三引号
- 【我的算法日记】请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”。
- python实现在每个独立进程中运行一个函数的方法