IP作为Python关联/字典数组索引/键

IP作为Python关联/字典数组索引/键,python,arrays,Python,Arrays,我试图将assoc数组索引设置为IP,以便跟踪它们在数据包中出现的次数 log = {} if log[str(s_addr)] < 1: log[str(s_addr)] = 1 else: log[str(s_addr)] += 1 if log[str(s_addr)] > 100: data_salary = { 'protocol' : str(protocol), '

我试图将assoc数组索引设置为IP,以便跟踪它们在数据包中出现的次数

 log = {}
 if log[str(s_addr)] < 1:
     log[str(s_addr)] = 1
 else:
     log[str(s_addr)] += 1
     if log[str(s_addr)] > 100:
         data_salary = {
             'protocol' : str(protocol),
             'source_ip': str(s_addr),
             'dest_ip': str(d_addr),
             'source_port':str(source_port),
             'dest_port': str(dest_port)
         }
         cursor.execute(add_salary, data_salary)
         cnx.commit()
         print("Logged")
log={}
如果日志[str(s_addr)]<1:
日志[str(s_addr)]=1
其他:
日志[str(s_addr)]+=1
如果日志[str(s_addr)]>100:
数据_工资={
“协议”:str(协议),
“源ip”:str(s地址),
“目的地ip”:str(地址),
“源端口”:str(源端口),
“目的地端口”:str(目的地端口)
}
cursor.execute(添加薪资、数据薪资)
提交
打印(“记录”)
然而,这给了我一个关键的错误


有更好的方法吗?

这会给你一个键错误,因为当你试图进行比较时,
log[str(s\u addr)]
是未定义的。尝试以下方法:

log = {
  str(s_addr) : 0
}
if log[str(s_addr)] < 1:
    ...
log={
str(s_地址):0
}
如果日志[str(s_addr)]<1:
...

但是,值得注意的是,给定此代码,
log[str(s_addr)]
每次都将重置为0;我只是在解决关键错误。我需要更多关于此代码的更大环境的信息,以便向您提供更多建议。或者,可以只制作
log
a
collections.defaultdict(int)