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

时间:2014-04-25 18:04:42

标签: python dictionary multidimensional-array

我有一个多维字典。尺寸列表作为变量给出。如何使用该列表中的所有维度并访问末尾存储的值。

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

如何以pythonic方式编写以下命令

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

1 个答案:

答案 0 :(得分: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)