python 中的嵌套索引
Nested indexing in python
我有一个 python 字典,它的一些(但不是全部)值也是字典。
例如:
d = {'a' : 1,
'b' : {'c' : 3, 'd' : 'target_value'}
}
传递键以达到任何目标值的最佳方式是什么?像 retrieve(d, (key, nested_key, ...))
这样的东西 retrieve(d, ('b','d'))
会 return target value
.
这里更好的选择是找到一种规范化数据结构的方法,但如果由于某种原因不能,您可以按顺序访问每个键。
例如:
def nested_getter(dictionary, *keys):
val = dictionary[keys[0]]
for key in keys[1:]:
val = val[key]
return val
d = {'a' : 1,
'b' : {'c' : 3, 'd' : 'target_value'}
}
print(nested_getter(d, 'b', 'd'))
你也可以递归地做:
def nested_getter(dictionary, *keys):
val = dictionary[keys[0]]
if isinstance(val, dict):
return nested_getter(val, *keys[1:])
else:
return val
我有一个 python 字典,它的一些(但不是全部)值也是字典。
例如:
d = {'a' : 1,
'b' : {'c' : 3, 'd' : 'target_value'}
}
传递键以达到任何目标值的最佳方式是什么?像 retrieve(d, (key, nested_key, ...))
这样的东西 retrieve(d, ('b','d'))
会 return target value
.
这里更好的选择是找到一种规范化数据结构的方法,但如果由于某种原因不能,您可以按顺序访问每个键。
例如:
def nested_getter(dictionary, *keys):
val = dictionary[keys[0]]
for key in keys[1:]:
val = val[key]
return val
d = {'a' : 1,
'b' : {'c' : 3, 'd' : 'target_value'}
}
print(nested_getter(d, 'b', 'd'))
你也可以递归地做:
def nested_getter(dictionary, *keys):
val = dictionary[keys[0]]
if isinstance(val, dict):
return nested_getter(val, *keys[1:])
else:
return val