如果我有一個嵌套的字典中,我可以通過索引像這樣一鍵搞定:通嵌套詞典的位置作爲參數在Python
>>> d = {'a':{'b':'c'}}
>>> d['a']['b']
'c'
我是否能夠通過該索引作爲函數參數?
def get_nested_value(d, path=['a']['b']):
return d[path]
編輯:我知道我的語法不正確。它是正確語法的代理。
如果我有一個嵌套的字典中,我可以通過索引像這樣一鍵搞定:通嵌套詞典的位置作爲參數在Python
>>> d = {'a':{'b':'c'}}
>>> d['a']['b']
'c'
我是否能夠通過該索引作爲函數參數?
def get_nested_value(d, path=['a']['b']):
return d[path]
編輯:我知道我的語法不正確。它是正確語法的代理。
你可以(在Python 3或functools.reduce
)使用reduce
,但還需要你在你的密鑰列表/元組經過:
>>> def get_nested_value(d, path=('a', 'b')):
return reduce(dict.get, path, d)
>>> d = {'a': {'b': 'c'}}
>>> get_nested_value(d)
'c'
>>>
(在你的情況['a']['b']
不起作用,因爲['a']
是一個列表,並['a']['b']
正試圖查找該元素在「b「該列表的第n個索引)
感謝,整齊的函數。我以前並沒有意識到這一點! – aberger
不是真的,但通過重寫你的函數體一點點,你可以通過按鍵作爲一個元組或其他序列:
def get_nested_value(d, keys):
for k in keys:
d = d[k]
return d
d = {'a':{'b':'c'}}
print get_nested_value(d, ("a", "b"))
否。您得到'TypeError:列表索引必須是整數,而不是str'。 –
然而你可以這樣做,'path = ['a','b']'並且做'd [path [0]] [path [1]]' –