我想使用字典来记录与IP地址相关的数据,本质上IP地址可以有多个与之关联的组,我需要捕获有关与该IP地址相关的组的信息(这些是控制器组)在无线系统上,所以数据都与接入点的配置有关)。我想要这样的东西:
{<ip_addr>: [{group_name: my_aps, total_aps: 22, total_active_aps: 12},
{group_name: my-other_aps, total_aps: 15, total_active_aps:14},
{...}
]
}
我的脚本循环遍历一个组列表(有300多个)并从无线控制器中提取信息。每次循环我都会获得新组的详细信息。但我无法解决如何将组字典添加到列表中的问题。我正在尝试(其中group_details是组字典,lms_ip是我要列出的地址):
lms_groups[lms_ip].append(group_details)
但我明白了:
KeyError: 'xxx.xxx.xxx.xxx'
(IP地址隐藏fwiw)
脚本似乎达到了这一点,我认为字典正在创建中。
答案 0 :(得分:1)
选项1
dict.setdefault
lms_groups.setdefault(lms_ip, []).append(group_details)
选项2
collections.defaultdict
from collections import defaultdict
lms_groups = defaultdict(list)
...
lms_groups[lms_ip].append(group_details)
答案 1 :(得分:0)
我不确定这是否可以解决错误,但至少可以更好地访问该词典。
ip_list = lms_groups.get(lms_ip, [])
ip_list.append(group_details)
lms_groups[lms_ip] = ip_list