0
我有python列表和字典的嵌套結構。訪問列表/字典的任意嵌套結構中的元素
tree = { 'blah': [ "booz", {'foobar': [ { 'somekey': 'someval' } ] } ] }
我也有幾個遞歸函數,讓我穿越從頂部tree
層次結構,底部和返回鍵和值,我需要。例如:
def get_objectcontent(obj, objid):
result = None
if isinstance(obj, dict):
for key, val in obj.items():
if key == objid:
result = val
elif isinstance(val, list) or isinstance(val, dict):
retval = get_objectcontent(val, objid)
if retval is not None:
result = retval
elif isinstance(obj, list):
for elem in obj:
if isinstance(elem, list) or isinstance(elem, dict):
retval = get_objectcontent(elem, objid)
if retval is not None:
result = retval
return result
不幸的是,我想修改tree
中的數據,那就是問題所在。唯一可能的解決,我可以看到的是動態構造的「路徑」,以元素,而走通過tree
並構建類似:
tree['blah'][1]['foobar'][0]['somekey']) = 'newval'
我沒有找到任何辦法,我怎麼能指出我的鍵入Python(當我知道它在結構中的位置時)。
在Python 3中還有其他更智能的方法來解決這個問題嗎?
謝謝,非常簡單。 – tvm