0

给定一个n长列表,例如['animal', 'dog', 'golden retriever']or ['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']可能存在,但我可能仍然需要在晚餐中添加意大利面,在意大利面中添加白酱等。

4

2 回答 2

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]
于 2012-05-30T03:08:44.907 回答
0

我认为它就像一个树数据结构

test = ['animal', 'dog', 'golden retriever']
tree = {}
subtree = tree
for x in test:
    subtree = subtree.setdefault(x, {})

tree是_{'animal': {'dog': {'golden retriever': {}}}}

祝你好运!

于 2012-05-30T03:13:37.823 回答