本帖最后由 无符号整形 于 2018-8-2 11:32 编辑 def f(key):
for each in key:
try:#小心!假如只是{'a'}(集合)的话会出错
if isinstance(key[each],dict):#假如找到下一个字典
print(each,end='-->')#打印
f(key[each])#递归查找
continue
elif isinstance(key[each],set):#假如找到集合(预示着树到了尽头)另:{'c'}是集合,而且不能key[each],这样得不到任何东西
print(each,end='-->')#打印(这时候要打印两个东西,一个是集合的标签(上面检测不到,因为这个标签(key[each])指向的对象不是字典,另外一个是集合本身)
print(str(key[each])[2:-2])#打印集合外加换行(记住要打印第一个元素)
return#返回
except TypeError:#假如只是{'a'}(集合)
print(each)#打印集合内的元素,你可能会奇怪为什么这里打印each就行了,因为假如key是个集合(例如{'a'})的话它会被送进for(送代集合),然而TypeError就发生在第四行(用字典的方式访问集合),这时each已经被填入了集合的第一个元素(例如'a'),所以这时访问each即可访问到集合内的元素。
|