Мне нужно захватить строки из всех файлов в каталоге и записать их как-то, поэтому я попытался использовать defaultdict для создания этого, но мне трудно понять, как постепенно добавлять в каждый слой словаря. По сути, то, что словарь должен выглядеть так:Python: defaultdict (dict) как создать вложенный словарь?
Имя файла
Bundle
информация
Bundle
информация
Имя файла
Bundle
информация
и т.д. У меня есть данные в виде списка, поэтому я могу просто добавьте все, что мне нужно, в список, но когда я запустил то, что у меня здесь, я получаю один комплект и информацию для каждого имени файла. Кажется, что функция update() заменяет значения внутри, и я не уверен, как заставить ее продолжать добавлять, а затем создавать более новый словарь для каждого пакета. Любая помощь приветствуется и извините за любую путаницу.
import collections
import os
devices = collections.defaultdict(lambda: collections.defaultdict(dict))
# bundles = collections.defaultdict(dict)
for filename in os.listdir('.'):
if os.path.isfile(filename):
if '.net' in filename:
dev = open(filename)
for line in dev:
line = line.strip()
values = line.split(' ')
if values[0] == 'interface':
bundle_name = values[1]
if '/' in bundle_name:
pass
else:
if len(values) == 2:
ur_device = devices[filename]
ur_device.update(
{
'bundle_name': bundle_name,
'bundle_info': [],
}
)
if 'secondary' in values:
pass
elif values[0] == 'ipv4' and values[1] == 'address' and len(values) == 4:
ur_device['bundle_info'].append(
{
'ip_address': values[2],
'subnet_mask': values[3],
}
)
dev.close()
Спасибо за понимание! Я закончил тем, что начал работать, и ваши комментарии помогли мне упростить его. – dreamville