Python:使用每个索引的所有先前索引遍历列表

Bri*_*eud 0 python algorithm loops

给定一个列表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']
Run Code Online (Sandbox Code Playgroud)

我越来越深入到一个物体,但每个值可能存在,也可能不存在,所以我需要在每个级别停下来.也就是说,stuff['food']['dinner']可能存在,但我可能仍需要在晚餐中加入意大利面,在意大利面上加白汁等.

Eli*_*sky 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']
Run Code Online (Sandbox Code Playgroud)

因此,在循环的每个"步骤"中,lst[:i+1]您的"当前索引包含所有以前的索引",您可以随心所欲地执行任何操作.

例如,您可以使用它来索引一些深层嵌套的层次结构dict:

d = mydict
for index in lst[:i+1]:
  d = d[index]
Run Code Online (Sandbox Code Playgroud)