area ={'世界':{'中国':{'广东':{'佛山':{'南海':{'桂城':'我家'}},'广州':{'荔湾':None}},'香港':{'九龙':None}},'美国':{}}}defprint_k(area, i=0):for k in area:print('----'* i, k, sep='')ifisinstance(area[k],dict):
print_k(area[k], i+1)
print_k(area)
dt ={'collect':'Apple','next':{'other':'nothing','collect':'Ball','next':{'collect':'Cat','next':None}}}defcollect(dt, ls=[]):for k in dt:if k =='collect':
ls.append(dt[k])elif k =='next':ifisinstance(dt[k],dict):return collect(dt[k], ls)else:return ls
print(collect(dt))
打印结果
[‘Apple’, ‘Ball’, ‘Cat’]
在嵌套字典各层中任意切换
area ={'中国':{'广东':{'佛山':{'南海':{'桂城':{}}},'广州':{'荔湾':{}}},'香港':{}},'美国':{'纽约':{}}}# 储存已经进入的层数
current_area=[area]# q为退出,b为返回上一层defaccess(a):if a =='q':
quit('退出')elif a =='b':iflen(current_area)==1:print('已经在第一层')else:
current_area.pop()# 入栈# 进入下一层whileTrue:for i inenumerate(current_area[-1]):print(*i, sep='\t')
a =input('')
access(a)if a in current_area[-1]:
current_area.append(current_area[-1][a])else:print('操作不合法')# 出栈