从嵌套字典中提取键和值

我有一个嵌套字典的形式


'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))


ibeautiful
浏览 237回答 1
1回答

侃侃无极

在进行递归调用时,您应该将父键作为路径进行跟踪,以便在看到键UNK时可以将路径与当前值一起打印出来:def myprint(d, path=None):&nbsp; &nbsp; if path is None:&nbsp; &nbsp; &nbsp; &nbsp; path = []&nbsp; &nbsp; for k, v in d.items():&nbsp; &nbsp; &nbsp; &nbsp; if k == '<UNK>':&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print(' '.join(path + [str(v)]))&nbsp; &nbsp; &nbsp; &nbsp; elif isinstance(v, dict):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; myprint(v, path + [k])以便myprint(d)输出:adipisci foo 2adipisci adipisci 2adipisci non adipisci 2adipisci est 3adipisci tempora 5请注意,如果您使用的是 Python 3.5 或更高版本,则可以使用通用解包来打印以下项目path:print(*path, v)而不是print(' '.join(path + [str(v)])).
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python