首页 后端开发 Python教程 Python构造自定义方法来美化字典结构输出

Python构造自定义方法来美化字典结构输出

May 29, 2018 am 10:33 AM
python 字典 输出

示例:

代码如下:

d = { "root": { "folder2": { "item2": None, "item1": None }, "folder1": { "subfolder1": { "item2": None, "item1": None }, "subfolder2": { "item3": None } } } }

美观输出是:

Python构造自定义方法来美化字典结构输出

观察一下特点:
1.同一level的key左对齐,即indent相同。

d = { "root": { "folder2": { "item2": None, "item1": None }, "folder1": { "subfolder1": { "item2": None, "item1": None }, "subfolder2": { "item3": None } } } }

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构造自定义方法来美化字典结构输出相关文章请关注PHP中文网!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Stock Market GPT

Stock Market GPT

人工智能驱动投资研究,做出更明智的决策

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

如何从python中的unignts.txt文件安装包装 如何从python中的unignts.txt文件安装包装 Sep 18, 2025 am 04:24 AM

运行pipinstall-rrequirements.txt可安装依赖包,建议先创建并激活虚拟环境以避免冲突,确保文件路径正确且pip已更新,必要时使用--no-deps或--user等选项调整安装行为。

如何用Pytest测试Python代码 如何用Pytest测试Python代码 Sep 20, 2025 am 12:35 AM

Pytest是Python中简单强大的测试工具,安装后按命名规则自动发现测试文件。编写以test_开头的函数进行断言测试,使用@pytest.fixture创建可复用的测试数据,通过pytest.raises验证异常,支持运行指定测试和多种命令行选项,提升测试效率。

如何处理python中的命令行参数 如何处理python中的命令行参数 Sep 21, 2025 am 03:49 AM

theargparsemodulestherecommondedwaywaytohandlecommand-lineargumentsInpython,提供式刺激,typeValidation,helpmessages anderrornhandling; useSudys.argvforsimplecasesRequeRequeRingminimalSetup。

什么是BIP?为什么它们对比特币的未来如此重要? 什么是BIP?为什么它们对比特币的未来如此重要? Sep 24, 2025 pm 01:51 PM

目录什么是比特币改进提案(BIP)?为什么BIP如此重要?比特币改进提案(BIP)的历史BIP流程如何运作?BIP类型什么是信号以及矿工如何发出信号?Taproot快速试用BIP的利与弊结语‍自2011年以来,对比特币的任何改进都通过称为比特币改进提案或​​“BIP”的系统进行。比特币改进提案(BIP)为比特币如何发展提供了指导方针一般来说,BIP有三种可能的类型,其中两种与比特币的技术变革有关每个BIP都是从比特币开发者之间的非正式讨论开始的,他们可以在任何地方聚集,包括Twi

从新手到专家:10个必备的免费公共数据集网站 从新手到专家:10个必备的免费公共数据集网站 Sep 15, 2025 pm 03:51 PM

对于数据科学的初学者而言,从“毫无经验”到“行业专家”的跃迁之路,其核心就是不断地实践。而实践的基础,正是丰富多样的数据集。幸运的是,网络上有大量提供免费公共数据集的网站,它们是提升技能、磨练技术的宝贵资源。

如何使用Python中的@ContextManager Decorator创建上下文管理器? 如何使用Python中的@ContextManager Decorator创建上下文管理器? Sep 20, 2025 am 04:50 AM

Import@contextmanagerfromcontextlibanddefineageneratorfunctionthatyieldsexactlyonce,wherecodebeforeyieldactsasenterandcodeafteryield(preferablyinfinally)actsas__exit__.2.Usethefunctioninawithstatement,wheretheyieldedvalueisaccessibleviaas,andthesetup

电脑怎么选才适合大数据分析?高性能计算的配置指南 电脑怎么选才适合大数据分析?高性能计算的配置指南 Sep 15, 2025 pm 01:54 PM

大数据分析需侧重多核CPU、大容量内存及分层存储。首选多核处理器如AMDEPYC或RyzenThreadripper,兼顾核心数量与单核性能;内存建议64GB起步,优先选用ECC内存保障数据完整性;存储采用NVMeSSD(系统与热数据)、SATASSD(常用数据)和HDD(冷数据)组合,提升整体处理效率。

如何编写Python中日常任务的自动化脚本 如何编写Python中日常任务的自动化脚本 Sep 21, 2025 am 04:45 AM

Identifyrepetitivetasksworthautomating,suchasorganizingfilesorsendingemails,focusingonthosethatoccurfrequentlyandtakesignificanttime.2.UseappropriatePythonlibrarieslikeos,shutil,glob,smtplib,requests,BeautifulSoup,andseleniumforfileoperations,email,w

See all articles