我有一个嵌套字典的形式'adipisci': {'foo': {'<UNK>': 2}, 'adipisci': {'<UNK>': 2}, 'non': {'adipisci': {'<UNK>': 2}} 'est': {'<UNK>': 3}, 'tempora': {'<UNK>': 5}}我需要生成adipisci foo 2adipisci adipisci 2adipisci non adipisci 2adipisci est 3adipisci tempora 5我有以下代码,但没有得到预期的结果def myprint(d,result): for k, v in d.items(): if k=='<UNK>': print(result) if isinstance(v, dict): result+=' '+k myprint(v,result) else: print("{0} : {1}".format(k, v))
1 回答

侃侃无极
TA贡献2051条经验 获得超10个赞
在进行递归调用时,您应该将父键作为路径进行跟踪,以便在看到键UNK时可以将路径与当前值一起打印出来:
def myprint(d, path=None):
if path is None:
path = []
for k, v in d.items():
if k == '<UNK>':
print(' '.join(path + [str(v)]))
elif isinstance(v, dict):
myprint(v, path + [k])
以便myprint(d)输出:
adipisci foo 2
adipisci adipisci 2
adipisci non adipisci 2
adipisci est 3
adipisci tempora 5
请注意,如果您使用的是 Python 3.5 或更高版本,则可以使用通用解包来打印以下项目path:
print(*path, v)
而不是print(' '.join(path + [str(v)])).
添加回答
举报
0/150
提交
取消