# coding=utf-8defmyprint(d):print(myprint2(d,0))defmyprint2(d, deep=0):
result =''
newline ='\n'
suojin =' '* deep
ifisinstance(d,dict):
start, end ='{','}'
result = suojin + start + newline # 定义当前字典的开头缩进,以及左括号for key in d.keys():
result += myprint2(key, deep +1)+' : '# 打印键,以及冒号ifisinstance(d[key],(list,dict,tuple)):
result = result + newline + myprint2(d[key], deep +1)+','+ newline # 如值不是字符串,则换行进行打印这个序列或者字典else:
result = result +repr(d[key])+','+ newline # 若值是字符串,则直接打印字符串,并且加上逗号和换行
result += suojin + end # 打印结果的缩进,以及右括号return result
elifisinstance(d,list):
start, end ='[',']'
result = suojin + start + newline # 定义当前序列的开头缩进,以及左括号for value in d:
result = result + myprint2(value, deep +1)+','+ newline # 直接将内容放入myprint2打印,并且加上新的缩进
result += suojin + end # 定义结尾的缩进,以及右括号return result
elifisinstance(d,tuple):
start, end ='(',')'
result = suojin + start + newline
for value in d:
result = result + myprint2(value, deep +1)+','+ newline
result += suojin + end
return result
else:return suojin +repr(d)# 打印字符串加上引号结果if __name__ =='__main__':
d1 ={'a':{'a':1,'b':2}}
d2 =['aaaaaaa',1231231235,[12312311,123132,3123213],['asdfsaf','123213123','asdfsaf']]
d3 ='asdfasddf'
d4 =(1,2,3,4)print(myprint(d3))