我正在寻找想法,指针,以帮助我达成一个解决方案,以防止以前的价值观被过度书写。我看到了一些列表实现,但是想看看是否有更好的方法
场景: 我想读一个Wireshark解码的文件,然后把信息放到Python字典中。我已经编写了代码,并开始将数据放入字典,从DNS数据开始,我已经在问题中包含了这些数据。 代码读入第一个DNS主机的数据并填充字典。现在,当涉及到第二个主机的标识“1”时,它会覆盖DNS数据值,包括主机标识字段。在
代码片段是
dictionarynetworkobject = {}
dictionarynetworkobject['DNS']['HostId'] = 0
但是
^{pr2}$覆盖,主机ID为0的数据。同样的事情也发生在TCP序列ID和HTTP数据上。 我看了很多,但是没有找到一个更好的方法来添加,不同的值“主机号”、“TCP序列号”和“HTTP交易号”,在写入第一个值之后。在
我已经看过更新,方法,但它不起作用。我也试过了
from collections import defaultdict
def tree(): return defaultdict(tree)
dictionarynetworkobject = tree()
但这也行不通。我想在这件事上挑起大家的脑筋。下面是我要实现的结构。在
networList = {
'DNS':
{
'Host_Id' :
{
{ '0': {'Local_Time':2015-10-02 17:20, 'DNS_Time': 2015-10-02 17:20, 'Num_Bytes':265, 'IP':1.2.3.4,'IPMODE':IPV4}},
{ '1': {<-OverWriting the Previous Data->}},
{ '2': {<-OverWriting the Previous Data->}},
{ '3': {<-OverWriting the Previous Data->}}
}
}
'TCP': {
'TCP_SEQ_NO': {
{'0': {TCP network data}},
{'2': {TCP network data}},
{'3': {TCP network data}},
{'4': {TCP network data}}
}
},
'HTTP': { 'HTTP_Transaction_id': {
{'0': {HTTP data}},
{'1': {HTTP data}},
{'2': {HTTP data}},
{'3': {HTTP data}}
}
}
}
________________________ Data for the DNS ____________________________________
Local_Time Host_Id DNS_Time Num_Bytes IP IPMODE
2015-10-02 17:20 0 2015-10-02 17:20 265 1.2.3.4 IPV4
2015-10-02 17:20 1 2015-10-02 17:20 106 5.6.7.8 IPV4
2015-10-02 17:20 2 2015-10-02 17:20 912 8.7.6.5 IPV4
2015-10-02 17:20 3 2015-10-02 17:20 913 4.3.2.1 IPV4
________________________________________________________________________________
您需要
list
在dict
我想你在找这样的建筑,也许吧?在
据Python所知,您的代码只是将位置
dictionarynetworkobject['DNS']['HostId']
设置为新值,正如其他人所说,您需要做的是使该值成为一个列表,然后将新值附加到该列表中相关问题 更多 >
编程相关推荐