我有一个多维字典。尺寸列表作为变量给出。如何使用该列表中的所有维度并访问末尾存储的值。
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]]
答案 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)