给定一个列表n
长,例如['animal', 'dog', 'golden retriever']
或['food', 'dinner', 'pasta', 'white sauce', 'fetucci alfredo']
,我需要循环遍历数组并获取当前索引以及每个先前的索引。
是否有任何好的方法可以循环执行此操作,以便仍可以将任何长度的列表转换为:
stuff['food']
stuff['food']['dinner']
stuff['food']['dinner']['pasta']
stuff['food']['dinner']['pasta']['white sauce']
stuff['food']['dinner']['pasta']['white sauce']['fetucci alfredo']
我越来越深入到一个物体,但每个值可能存在,也可能不存在,所以我需要在每个级别停下来。也就是说,stuff['food']['dinner']
可能存在,但我可能仍然需要在晚餐中加入意大利面,在意大利面加白汁等。
答案 0 :(得分:5)
此?
>>> lst = ['food', 'dinner', 'pasta', 'white sauce', 'fetucci alfredo']
>>> for i in range(len(lst)):
... print lst[:i+1]
...
['food']
['food', 'dinner']
['food', 'dinner', 'pasta']
['food', 'dinner', 'pasta', 'white sauce']
['food', 'dinner', 'pasta', 'white sauce', 'fetucci alfredo']
因此,在循环的每个“步骤”中,lst[:i+1]
是您的“包含所有先前索引的当前索引”,您可以随意执行任何操作。
例如,您可以使用它来索引一些深层嵌套的分层字典:
d = mydict
for index in lst[:i+1]:
d = d[index]
答案 1 :(得分:0)
我认为它就像一个树数据结构
test = ['animal', 'dog', 'golden retriever']
tree = {}
subtree = tree
for x in test:
subtree = subtree.setdefault(x, {})
tree
为{'animal': {'dog': {'golden retriever': {}}}}