根据原始目录的键创建新的词典

时间:2017-06-30 15:18:05

标签: python dictionary key

所以我有一个填充了来自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','...']]

但是从原始词典中我想要基于源地址的新词典。因此,每个新字典都是源地址和来自该源地址的流。

1 个答案:

答案 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}