从具有可变维度数的多维字典中获取值

0 投票
1 回答
1377 浏览
提问于 2025-04-18 04:16

我有一个多维字典。维度的列表是通过一个变量给出的。我该如何使用这个列表中的所有维度,去访问存储在最后的值呢?

def get_value(dict, dimensions):
    """
    dict is the multidimensional dict
    dimensions is a list of strings which specify all the dimensions
    """

我该如何用更符合Python风格的方式来写下面的命令呢?

    dict[dimensions[0]][dimensions[1]][dimensions[2]]......[dimensions[len(dimensions)-1]]

1 个回答

2

其实并不太难,假设你用稍微不同的方式写了这个:

dict = dict[dimensions[0]]
dict = dict[dimensions[1]]
dict = dict[dimensions[2]]
......
dict = dict[dimensions[len(dimensions)-1]]

我们可以看到一个规律。还有一点要注意的是,我们只是遍历不同的维度,我们可以这样做:

for d in dimensions:
    dict = dict[d]

所以,实际上我们可以这样做:

def get_value(mapping, keys):
    for key in keys:
        mapping = mapping[key]
    return mapping

有趣的是,Python 提供了一个简便的方法来处理这个规律,就是对一个初始元素反复应用一个操作,每个操作对应另一个序列中的一个元素,这个方法叫做 reduce()

def get_value(mapping, keys):
    return reduce(dict.get, keys, mapping)

撰写回答