Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从多维中获取一个值,在python中具有可变的维度数和字典_Python_Dictionary_Multidimensional Array - Fatal编程技术网

从多维中获取一个值,在python中具有可变的维度数和字典

从多维中获取一个值,在python中具有可变的维度数和字典,python,dictionary,multidimensional-array,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 """ 如何以Python的方式编写下面的命令 dict[dimensions[0]][dimen

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

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]]

不太难,假设你用一种稍微不同的方式写了这个:

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


第一个警告-使用Python保留字作为变量名是危险的,在您的情况下,您使用的是
dict
。为此,我通常使用
dct
while(dimensions):dict=dict[dimensions.pop(0)]
感谢您的回答以及您可能/应该采取的步骤。
def get_value(mapping, keys):
    return reduce(dict.get, keys, mapping)