从嵌套字典中提取键和值

2024-06-13 23:25:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本嵌套字典

'adipisci': {'foo': {'<UNK>': 2},
              'adipisci': {'<UNK>': 2},
              'non': {'adipisci': {'<UNK>': 2}}
              'est': {'<UNK>': 3},
              'tempora': {'<UNK>': 5}}

我需要生成

adipisci foo 2
adipisci adipisci 2
adipisci non adipisci 2
adipisci est 3
adipisci 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))

Tags: 代码inforif字典foodefresult
1条回答
网友
1楼 · 发布于 2024-06-13 23:25:50

在进行递归调用时,应将父键作为路径进行跟踪,以便在看到键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)]))。你知道吗

相关问题 更多 >