所以我有一个填充了来自csv文件的网络流量的字典。每个密钥都是源地址。例如:
52.113.56.149
[['tcp','https','34.567.12.899','2'...]['udp','https',...]]
特定源地址的每个流包含各种值,并且包含如[[flow1],[flow2] ...]。但是每个源地址不包含相同数量的流。如何为每个源地址(原始字典中的键?)创建新字典?
编辑: 原始字典称为datadict,格式如上,因此每个键(源地址)都有值(当我打印出dict时,它看起来像这样:
12.464.67.478
[['tcp','https','etc],[another flow]...]
35.482.19.191
[['udp','...']]
但是从原始词典中我想要基于源地址的新词典。因此,每个新字典都是源地址和来自该源地址的流。
答案 0 :(得分:0)
你可以试试这个:
val = [['tcp','https','34.567.12.899','2'...]['udp','https',...]]
new_dict = {i[2]:i[:2]+i[3:] for i in val}
这将输出IP地址作为键,并将附加信息作为存储在列表中的值输出:
{'34.567.12.899': ['tcp', 'https', '2'....], ....}
此示例使用dict comprehension获取列表的第二个元素(即IP地址),然后将列表中的其余数据作为值存储,而不使用IP地址。值的拼接占用第三个元素,不计算第二个元素,然后将该子列表从第三个元素开始添加到列表的其余部分。
编辑:
这是一种存储数据的方法,以便源地址也包含在值中:
new_dict = {i[2]:i for i in val}