从多维中获取一个值,在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)