从python中的嵌套字典中获取所有值

新手上路,请多包涵

我有一些字典的字典,像这样:

 a['b']['c']['d']['answer'] = answer1
a['b']['c']['e']['answer'] = answer2
a['b']['c']['f']['answer'] = answer3
....
a['b']['c']['d']['conf'] = conf1
a['b']['c']['e']['conf'] = conf2
a['b']['c']['f']['conf'] = conf3

有没有一种快速的方法来获取第三级(d,e,f)所有元素的所有答案的值列表?

具体来说,我想知道是否有任何实现通配符的机制(例如, a['b']['c']['*']['answer'].values()

更新 到目前为止我发现的最快方法是:

 [x['answer'] for x in a['b']['c'].values()]

原文由 redcrow 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 426
2 个回答

只是为了回答这个话题,从我的问题的“更新状态”中复制我的解决方案:

 [x['answer'] for x in a['b']['c'].values()]

希望这能有所帮助。

原文由 redcrow 发布,翻译遵循 CC BY-SA 3.0 许可协议

在 Python3 中,我们可以为此构建一个简单的生成器:

 def NestedDictValues(d):
  for v in d.values():
    if isinstance(v, dict):
      yield from NestedDictValues(v)
    else:
      yield v

a={4:1,6:2,7:{8:3,9:4,5:{10:5},2:6,6:{2:7,1:8}}}
list(NestedDictValues(a))

输出是:

 [1, 2, 3, 4, 6, 5, 8, 7]

这是所有的值。

原文由 Richard 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题