我想寫入名爲foo
的嵌套列表中的元素,但嵌套深度和索引僅在運行時在已知(非嵌套!)列表變量indexes
中已知。訪問嵌套列表元素,運行時已知深度
例子:
如果indexes
爲[4]
,我想foo[4]
。我想要foo[4][7]
。
如果indexes
是[4,7,3]
,我想foo[4][7][3]
。
我能想到的是把命令字符串("foo[4][7][3]"
在最後一個例子中)放在一起,然後調用eval
。 這將是eval("foo["+']['.join([str(n) for n in indexes])+']')
。
工作,並且足夠短,但我希望更簡單,更pythonic的方式。
有沒有人知道任何替代品?
有沒有辦法不是分開處理空列表?如在:
如果indexes
是[]
,我想整個foo
。
這需要eval
解決方案中的if
。
編輯:我需要寫入,而不是從元素讀取。我不認爲現有的兩個答案中的任何一個,或者所指定副本的答案都不能用於寫作。道歉誤導。
不要使用'eval',請使用'ast.literal_eval'。 –
'result = foo;索引中的索引:result = result [index];返回結果?沒有'eval'uating,字面或其他,並對待你想要的空'索引'。 – jonrsharpe
@jonrsharpe更好!我寫了一個遞歸方法,但它不值得。 –