Установка значений во вложенном словаре - PullRequest
0 голосов
/ 15 декабря 2011

Я вложил dict как:

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

и он может пойти глубже

Как выполнить итерацию, бросить существующий dict и добавить для ex.новый предмет 'file2', описанный списком:

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

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

Эта функция добавит файл, если value не None, но в противном случае добавит новый каталог:

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 голосов
/ 15 декабря 2011

Полагаю, вы хотите сохранить структуру словаря.Итак, вы хотите выполнить итерацию по списку:

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

В зависимости от того, как вы хотите определить «синтаксис» вашего списка ввода, вам нужно будет решить, что поместить в переменную value.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...