我正在尝试编写一个程序,该程序接收有关交换机的数据。到目前为止,我已将数据拆分为每行包含ip,max和total。这些都填写在字典中,但我注意到每次迭代下面的字典结构时,我都会覆盖字典。我想在一个字典中添加多个条目。
for line in lines:
switch_ip = buildings[build_pre]
total = int(line.split(';')[3])
MAX = int(line.split(';')[4])
if switch_ip not in data:
data = { buildings[build_pre]:
{ switch_ip:
{ 'max': MAX,
'total':total
}
}
}
目前data
的输出是:
{'Azalea': {'Azalea': {'max': 14, 'total': 56}}}
但我希望输出看起来更像:
{'Azalea': {'Azalea': {'max': 14, 'total': 56}},
'Traditions': {'Traditions': {'max': 13, 'total': 20}}}
答案 0 :(得分:2)
你正在重新定义每个循环中的字典。相反,您希望将字典定义一次,然后附加到每个循环内的字典中。
data = {}
for line in lines:
switch_ip = buildings[build_pre]
total = int(line.split(';')[3])
MAX = int(line.split(';')[4])
if switch_ip not in data:
data[buildings[build_pre]] = {
switch_ip: {
'max': MAX,
'total':total
}
}
这样你就可以在每次迭代时为字典添加一个键,而不是试图构建一个全新的字典。
答案 1 :(得分:0)
您的代码cat可以重写如下:
for line in lines:
switch_ip = buildings[build_pre]
t = line.split(';')
total, max_ = int(t[3]), int(t[4])
data.setdefault(switch_ip, {
switch_ip: {'max': max_, 'total': total}
})
答案 2 :(得分:-2)
默认情况下,Python将变量称为本地变量。它可以添加到本地data
字典中,因此您可以尝试在for循环之前的其中一行中定义global data
。
但是,这取决于您使用它的方式和位置。