附加到列表字典

时间:2017-09-11 01:50:22

标签: python list dictionary

我想使用字典来记录与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)

脚本似乎达到了这一点,我认为字典正在创建中。

2 个答案:

答案 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