0

ornのような長いリストが与えられた場合、配列をループして現在のインデックスと以前の各インデックスを取得する必要があります。['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']存在するかもしれませんが、夕食にパスタを追加したり、パスタにホワイトソースを追加したりする必要があるかもしれません.

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]「以前のすべてのインデックスを含む現在のインデックス」があり、それを使って好きなことをすることができます。

たとえば、これを使用して、深くネストされた階層 dict にインデックスを付けることができます。

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 に答える