我想创建一个简单的表(使用python),我可以在其中存储/搜索IP包头字段,即
源IP,目标IP,源端口,目标端口,计数
当我收到新的数据包标题字段时,我希望实现以下功能:
在表格中查找是否已添加包含这些字段的数据包,如果为true,则更新计数。
如果表中尚未存在数据包,请创建一个新条目,依此类推。
到目前为止,通过我的搜索,我有两个选择:
创建一个词典列表,每个词典都有上面提到的五个字段。 (Python list of dictionaries search)
使用SQLite。
我想问一下创建数据包/流查找表的最佳方法(或最佳选择)是什么。表的预期大小为100-500个条目。
答案 0 :(得分:0)
您可以使用集合中的defaultdict(list)来存储数据。我假设您希望基于源IP进行搜索,以便将源IP保持为密钥。
from collections import defaultdict
testDictionary = defaultdict(list)
testDictionary["192.168.0.1"] = ["10.10.10.1", 22, 8080, 0]
if testDictionary[sourceIP]:
testDictionary[sourceIP][-1] += 1
由于您说您只有一个包含100-500个条目的表,因此您也可以使用
搜索目标IPfor sourceIP, otherHeader in testDictionary.items():
if otherHeader[0] == destinationIP:
testDictionary[sourceIP][-1] += 1
我不知道源IP和目标IP在所有情况下都是唯一的。为此,您可以决定选择什么。 defaultdict(list)的优点是你可以附加东西而不会覆盖以前的值。
for sourceIP, otherHeader in testDictionary.items():
if otherHeader[0] != destinationIP:
testDictionary[sourceIP].append(["10.10.10.2", 22, 8080, 1])
else:
testDictionary[sourceIP][-1] += 1
我不确定这正是您所寻找的,但我已根据说明尝试了解您的数据类型。
希望有所帮助。