Python - 从键列表访问分层字典元素

标签 python dictionary recursion

假设我有一个常规的“dict-of-dicts”,如下所示:

d = {}
d['a'] = {}
d['a']['b'] = 3

我当然可以使用 d['a']['b'] 访问该元素。

在我的例子中,我有一个递归应用程序,其中我将当前状态保存为键列表。所以我会

my_key = ['a', 'b']

如何使用 my_key 访问值 3?当然,问题在于 my_key 可以任意长(深)。

我意识到我可以编写另一个遍历函数,但似乎应该有一种直接的方法来实现。有什么想法吗?

最佳答案

您可以使用 reduce 以不同的键迭代索引每一层 dict:

>>> from functools import reduce #only necessary in 3.X
>>> d = {}
>>> d['a'] = {} #I'm assuming this is what you meant to type
>>> d['a']['b'] = 3
>>> keys = ("a", "b")
>>> reduce(dict.get, keys, d)
3

关于Python - 从键列表访问分层字典元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34209587/

相关文章:

c++ - 递归加法序列C++

python - 在Django中上传图片

python - 如何打印内部列表包含字符串和字符串列表的列表列表?

python - 将 python 模块导入例程或类定义有什么问题吗?

当参数具有默认值时,Python递归函数结果取决于先前的调用

ios - NSMutableArray 为图像创建问题

android - 如何从 kotlin 中的 map 获取值?

javascript - 请求内递归函数调用的异步问题

python - 从字典的元素创建 Pandas 数据框

recursion - prolog 中列表的解压