2011-12-14 9 views
0

私のような辞書を入れ子にしている:設定値

tdict = {folder': {'file0.txt': 222, 'subfolder': {'file1.txt': 333}}, 'file00.txt': 111} 

、それは既存の辞書を投げると、元のための追加反復するためにどのように深い

を行くことができます。リストで説明する新しいアイテム'file2'、:

path_list = ['folder', 'subfolder', 'file2'] 

答えて

0

valueNoneではありませんが、そうでない場合は、新しいディレクトリを追加する場合、この関数は、ファイルを追加します。

def add_path(parent, path, value=None): 
    end = len(path) - 1 
    for index, component in enumerate(path): 
     if index < end or value is None: 
      parent = parent.setdefault(component, {}) 
     else: 
      parent[component] = value 
0

私はあなたが辞書の構造を維持したいと仮定します。

currItem = tdict 
for item in path_list: 
    if item not in currItem: 
     currItem[item] = value 
    else: 
     currItem = currItem[item] 

あなたがvalue変数に置くために何を決定する必要がありますあなたの入力リスト「構文」を定義する方法に応じて:だから、何がやりたいことリストを反復です。