[英]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.