为了账号安全,请及时绑定邮箱和手机立即绑定

从嵌套字典中提取键和值

从嵌套字典中提取键和值

ibeautiful 2021-11-23 19:11:54
我有一个嵌套字典的形式'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)])).


查看完整回答
反对 回复 2021-11-23
  • 1 回答
  • 0 关注
  • 236 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号