簡體   English   中英

Python:使用所有先前的索引和每個索引遍歷列表

[英]Python: loop through a list using all previous indexes with each index

給定一個列表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']可能存在,但我可能仍需要在晚餐中添加面食,在面食中添加白汁等。

這個?

>>> 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]

我認為這就像一個樹數據結構

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

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

祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM