python格式化输出dict等集合对象
2023-02-18 16:44:20 时间
调试程序的时候,如果需要打印出变量的信息,在python中很容易,一句print
即可,他几乎可以打印任何类型的对象,不像PHP中,有一堆echo(),print(),print_r(),var_dump()
,让人头疼!
但是PHP的打印函数有个好处,就是打印格式良好,而Python的打印信息就不是很友好了,如
# 模拟一个很大的键值对
dic = {}
for i in xrange(201):
dic[i] = "value for %d" % i
print dic
其结果我就不打印了,总之很难看!
如何让python那冗长而且没有格式的打印变得更直观,方法有两种。
自定义dump
此方法来自stackoverflow
# 以后需要有格式的打印一个集合对象,直接使用dump(xxx)即可!
# 不要忘了import sys
import sys
def dump(obj, nested_level=0, output=sys.stdout):
spacing = ' '
if type(obj) == dict:
print >> output, '%s{' % ((nested_level) * spacing)
for k, v in obj.items():
if hasattr(v, '__iter__'):
print >> output, '%s%s:' % ((nested_level + 1) * spacing, k)
dump(v, nested_level + 1, output)
else:
print >> output, '%s%s: %s' % ((nested_level + 1) * spacing, k, v)
print >> output, '%s}' % (nested_level * spacing)
elif type(obj) == list:
print >> output, '%s[' % ((nested_level) * spacing)
for v in obj:
if hasattr(v, '__iter__'):
dump(v, nested_level + 1, output)
else:
print >> output, '%s%s' % ((nested_level + 1) * spacing, v)
print >> output, '%s]' % ((nested_level) * spacing)
else:
print >> output, '%s%s' % (nested_level * spacing, obj)
pprint
此方法来自官方,可以自定义缩进,宽度等信息。
import pprint
dic = {}
for i in xrange(201):
dic[i] = "value for %d" % i
# 自定义缩进为4空格
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(dic)
老高推荐官方的pprint,自定义格式很不错!
完
Reference:
http://stackoverflow.com/questions/15785719/how-to-print-a-dictionary-line-by-line-in-python https://docs.python.org/2/library/pprint.html
相关文章
- 如何利用python的turtle模块绘制各种多边形
- 背包问题2(python解法)
- 反转链表的python题解
- 从尾到头打印链表(python题解)
- 二叉树的后一个节点(python来解答)
- python基础语法>>基本数据类型
- python>>numpy包
- python>>numpy(第二讲)
- python>>Matplotlib模块
- 实用!7个强大的Python机器学习库!⛵
- 【视频】Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析|数据分享|附代码数据
- Python pip 安装与使用
- python安装easyinstall/pip出错
- pybind11 大大简化 Python 调用 C/C++
- 4 年时间让 Python 性能提升 5 倍
- Python 越来越优雅了
- Python-3.12 性能分析特性
- 手把手教你MacOS系统下Python的安装和配置
- 如何在Rstudio中使用Python?
- 基于Prometheus的监控告警系统的Python开发