【问题标题】:Extract keys and values from nested dictionary [closed]从嵌套字典中提取键和值[关闭]
【发布时间】:2019-03-01 21:15:14
【问题描述】:

我有一个嵌套字典,格式为

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

【问题讨论】:

  • 如果k=='&lt;UNK&gt;' 你需要这个值。在这里你什么都没有返回。
  • @Kasrâmvd 是的。它标志着结束

标签: python dictionary recursion


【解决方案1】:

在进行递归调用时,您应该将父键作为路径跟踪,这样当您看到键 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)]))

【讨论】:

猜你喜欢
  • 2014-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-04
  • 2018-05-23
  • 2016-05-15
  • 2021-02-12
  • 1970-01-01
相关资源
最近更新 更多