的不同層次,我想定義一個小包裝函數,它接受某種「路徑」來訪問不同級別的嵌套的字典:使用「路徑」,以便訪問嵌套的字典
D = {'key1': valueA,
'key2': {'key21': valueB,
{'key22': valueC}
在這個簡單的例子,我想編寫一個函數,作爲參數使用,例如,像
dict_path = ('key2', 'key22')
>>>nested_getter(dict_path)
valueC
的不同層次,我想定義一個小包裝函數,它接受某種「路徑」來訪問不同級別的嵌套的字典:使用「路徑」,以便訪問嵌套的字典
D = {'key1': valueA,
'key2': {'key21': valueB,
{'key22': valueC}
在這個簡單的例子,我想編寫一個函數,作爲參數使用,例如,像
dict_path = ('key2', 'key22')
>>>nested_getter(dict_path)
valueC
def nested_getter(d, keys):
return reduce(dict.get, keys, d)
D = {'key1': valueA,
'key2': {'key21': valueB,
'key22': valueC}}
def nested_getter(root, path):
for elem in path:
root = root[elem]
return root
一個元組有了這個,你可以這樣做:
>>> nested_getter(D, ('key2', 'key22'))
3
我會用'* args'來避免額外的括號。 – StoryTeller 2013-04-29 12:54:34
在你的「問題」中似乎沒有問題。只是一個客觀的暗示「GO!」。 – StoryTeller 2013-04-29 12:53:08