Python 添加到列表字典时出现KeyError
我想使用字典来记录与IP地址相关的数据,本质上,IP地址可以有许多组与之关联,我需要捕获与该IP地址相关的组的信息(这些是无线系统上的控制器组,因此数据都与接入点的配置相关)。我想要像这样的东西:Python 添加到列表字典时出现KeyError,python,list,dictionary,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:1
{<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},
{...}
]
}
但我得到:
KeyError: 'xxx.xxx.xxx.xxx'
(IP地址隐藏fwiw)
脚本似乎可以运行到这一点,我认为字典正在创建中。我不确定这是否修复了错误,但至少它是一个更好的访问dict的方法
ip_list = lms_groups.get(lms_ip, [])
ip_list.append(group_details)
lms_groups[lms_ip] = ip_list
我不确定这是否能修复错误,但至少这是一个更好的访问dict的方法
ip_list = lms_groups.get(lms_ip, [])
ip_list.append(group_details)
lms_groups[lms_ip] = ip_list
选项1
dict.setdefault
选项2
collections.defaultdict
选项1
dict.setdefault
选项2
collections.defaultdict
使用
defaultdict(list)
?也许你应该写一篇演示你遇到的问题的文章。使用defaultdict(list)
?也许你应该写一篇演示你遇到的问题的文章。我建议使用dict.setdefault
而不是get()
使用默认值,然后无条件重新分配。我建议使用dict.setdefault
而不是get()
使用默认值,然后无条件重新分配。@coldspeed谢谢,我完全不知道如何接受答案!Done@coldspeed谢谢,我完全错过了如何接受答案!多恩
lms_groups.setdefault(lms_ip, []).append(group_details)
from collections import defaultdict
lms_groups = defaultdict(list)
...
lms_groups[lms_ip].append(group_details)