有关Python key 和 value 的问题求助
如何实现diot = {'a':{'b':{'c'}},'d':{'e'}}
到
a --> b --> c
d --> e
的转变呢 >>> diot = {'a':{'b':{'c'}},'d':{'e'}}
>>> diot['a']['b']
{'c'}
而{'e'}不是字典是集合。 本帖最后由 无符号整形 于 2018-8-2 11:32 编辑
def f(key):
for each in key:
try:#小心!假如只是{'a'}(集合)的话会出错
if isinstance(key,dict):#假如找到下一个字典
print(each,end='-->')#打印
f(key)#递归查找
continue
elif isinstance(key,set):#假如找到集合(预示着树到了尽头)另:{'c'}是集合,而且不能key,这样得不到任何东西
print(each,end='-->')#打印(这时候要打印两个东西,一个是集合的标签(上面检测不到,因为这个标签(key)指向的对象不是字典,另外一个是集合本身)
print(str(key))#打印集合外加换行(记住要打印第一个元素)
return#返回
except TypeError:#假如只是{'a'}(集合)
print(each)#打印集合内的元素,你可能会奇怪为什么这里打印each就行了,因为假如key是个集合(例如{'a'})的话它会被送进for(送代集合),然而TypeError就发生在第四行(用字典的方式访问集合),这时each已经被填入了集合的第一个元素(例如'a'),所以这时访问each即可访问到集合内的元素。 直接用键值连续索引即可 BngThea 发表于 2018-8-2 10:59
直接用键值连续索引即可
不好意思,打扰您了。可以详细给我讲一下吗?
无符号整形 发表于 2018-8-2 10:58
不好意思,我eclipse运行不出来。 哈哈哈哈哈hhhh 发表于 2018-8-5 09:44
不好意思,我eclipse运行不出来。
您是否没有调用它?
您需要给f函数传入一个字典。 无符号整形 发表于 2018-8-5 11:30
您是否没有调用它?
您需要给f函数传入一个字典。
不好意思。我可能没有表述清楚,我的具体问题是这样的:
有这样一个字典:{a:{b:c},d:e}
根据字典的级别
输出 a -- >b -- >c
d -- >e
是有关嵌套字典逐级打印的问题 哈哈哈哈哈hhhh 发表于 2018-8-5 11:35
不好意思。我可能没有表述清楚,我的具体问题是这样的:
有这样一个字典:{a:{b:c},d:e}
根据字典的级 ...
您可以将这个字典作为参数传入f,它会将它按您的要求打印出来。 本帖最后由 无符号整形 于 2018-8-5 17:32 编辑
哈哈哈哈哈hhhh 发表于 2018-8-5 11:35
不好意思。我可能没有表述清楚,我的具体问题是这样的:
有这样一个字典:{a:{b:c},d:{e}}
根据字典的级 ...
抱歉,我看错了格式,我还以为是{a:{b:{c}},d:{e}}的形式。
def f(key):
for each in key:
if isinstance(key,dict):#假如找到下一个字典
print(each,end='-->')#打印
f(key)#递归查找
elif isinstance(key,str):
print(each,end='-->')#打印(这时候要打印两个东西,一个是标签(上面检测不到,因为这个标签(key)指向的对象不是字典,另外一个是字符串本身)
print(key)
f({'a':{'b':'c'},'d':'e')
输出
a-->b-->c
d-->e
真的很抱歉!{:10_254:}
无符号整形 发表于 2018-8-5 17:29
抱歉,我看错了格式,我还以为是{a:{b:{c}},d:{e}}的形式。
输出
没有没有 您真的很厉害,谢谢您呀。
页:
[1]