【发布时间】:2016-10-06 10:56:24
【问题描述】:
我需要从目录中的所有文件中获取字符串并以某种方式记录它们,因此我尝试使用 defaultdict 来创建它,但我很难弄清楚如何逐步添加到字典的每一层。本质上,字典应该是这样的:
文件名
捆绑
信息
捆绑
信息
文件名
捆绑
信息
等 我将信息作为一个列表,所以我可以将我需要的任何内容附加到列表中,但是当我在这里运行我所拥有的内容时,我最终会为每个文件名获得一个包和信息。似乎 update() 函数正在替换里面的值,我不确定如何让它继续添加,然后为每个 Bundle 创建一个更新的字典。感谢您提供任何帮助,如有任何混淆,我们深表歉意。
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()
【问题讨论】:
标签: python dictionary nested defaultdict