Python構(gòu)造自定義方法來(lái)美化字典結(jié)構(gòu)輸出的示例
示例:
d = { "root": { "folder2": { "item2": None, "item1": None }, "folder1": { "subfolder1": { "item2": None, "item1": None }, "subfolder2": { "item3": None } } } }
美觀輸出是:

觀察一下特點(diǎn):
1.同一level的key左對(duì)齊,即indent相同。
2.在,號(hào)后換行。
3.如果value是字典,即嵌套字典,則嵌套字典在下一個(gè)level,每一個(gè)level的key的indent都不一樣。
思路分析:
這是個(gè)"拼接字符串"問(wèn)題,元素有""{}:,\n和空格indent。
遍歷一個(gè)個(gè)(k, v)鍵值對(duì),拼接yield起來(lái),遇到嵌套字典就遞歸,即遞歸+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) + ': {')))#計(jì)算下一層的indent
#case,根據(jù)(k,v)對(duì)在哪個(gè)位置確定拼接什么
if i == 0:#開(kāi)頭,拼左花括號(hào)
if len(obj) == 1:
yield '{%s: %s}'% (k, v)
else:
yield '{%s: %s,\n'% (k, v)
elif i == len(obj) - 1:#結(jié)尾,拼右花括號(hào)
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實(shí)現(xiàn)的遞歸神經(jīng)網(wǎng)絡(luò)簡(jiǎn)單示例
- Python中的Numpy入門教程
- Python NumPy庫(kù)安裝使用筆記
- Python科學(xué)計(jì)算之NumPy入門教程
- python中numpy基礎(chǔ)學(xué)習(xí)及進(jìn)行數(shù)組和矢量計(jì)算
- python中numpy包使用教程之?dāng)?shù)組和相關(guān)操作詳解
- 詳解Python list 與 NumPy.ndarry 切片之間的對(duì)比
- python中定義結(jié)構(gòu)體的方法
- python實(shí)現(xiàn)矩陣乘法的方法
- Python中shape計(jì)算矩陣的方法示例
- python實(shí)現(xiàn)稀疏矩陣示例代碼
- Python基于numpy靈活定義神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的方法
相關(guān)文章
Python使用asyncio包實(shí)現(xiàn)異步編程方式
這篇文章主要介紹了Python使用asyncio包實(shí)現(xiàn)異步編程方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
Pytorch實(shí)現(xiàn)的手寫數(shù)字mnist識(shí)別功能完整示例
這篇文章主要介紹了Pytorch實(shí)現(xiàn)的手寫數(shù)字mnist識(shí)別功能,結(jié)合完整實(shí)例形式分析了Pytorch模塊手寫字識(shí)別具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-12-12
Python-VTK隱式函數(shù)屬性選擇和剪切數(shù)據(jù)
這篇文章主要介紹了Python-VTK隱式函數(shù)屬性選擇和剪切數(shù)據(jù),VTK,是一個(gè)開(kāi)放資源的免費(fèi)軟件系統(tǒng),主要用于三維計(jì)算機(jī)圖形學(xué)、圖像處理和可視化,下面文章主題相關(guān)詳細(xì)內(nèi)容需要的小伙伴可以參考一下2022-04-04
Python3正則表達(dá)式之:(?(id/name)yes-pattern|no-pattern)條件性匹配
(?(id/name)yes-pattern|no-pattern)的作用是對(duì)于給出的id或者name,先嘗試去匹配 yes-pattern部分的內(nèi)容,如果id或name條件不滿足,則去匹配no-pattern部分的內(nèi)容2021-10-10
python關(guān)于矩陣重復(fù)賦值覆蓋問(wèn)題的解決方法
這篇文章主要介紹了python關(guān)于矩陣重復(fù)賦值覆蓋問(wèn)題的解決方法,涉及Python深拷貝與淺拷貝相關(guān)操作與使用技巧,需要的朋友可以參考下2019-07-07
Python過(guò)濾掉numpy.array中非nan數(shù)據(jù)實(shí)例
這篇文章主要介紹了Python過(guò)濾掉numpy.array中非nan數(shù)據(jù)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
python基礎(chǔ)--除法(/,//,%)的應(yīng)用說(shuō)明
這篇文章主要介紹了python基礎(chǔ)--除法(/,//,%)的應(yīng)用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
Django csrf 兩種方法設(shè)置form的實(shí)例
今天小編就為大家分享一篇Django csrf 兩種方法設(shè)置form的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02

