【发布时间】:2020-08-04 18:51:14
【问题描述】:
我正在尝试获取包含网络信息的主机列表,并生成唯一子网列表以及与子网关联的域列表。主机列表示例,缩短为三个,但这可能是数百/数千个项目:
hosts = [{
'name': 'foo',
'subnet_address': '192.168.1.0',
'subnet_mask': '255.255.254.0',
'domain': 'foo.example.com'
}, {
'name': 'bar',
'subnet_address': '192.168.2.0',
'subnet_mask': '255.255.254.0',
'domain': 'bar.example.com'
}, {
'name': 'baz',
'subnet_address': '192.168.2.0',
'subnet_mask': '255.255.254.0',
'domain': 'foo.example.com'
}]
这是我想要实现的输出类型,subnet_address 是唯一键,我想为它们构建域关联列表:
[{
'subnet_address': '192.168.1.0',
'subnet_mask': '255.255.254.0',
'domains': [
'foo.example.com'
]
}, {
'subnet_address': '192.168.2.0',
'subnet_mask': '255.255.254.0',
'domains': [
'bar.example.com',
'foo.example.com'
]
}]
我发现了有关从列表中删除重复字典的问题以及有关合并(更新)字典的问题,但尚未找到与此类似的任何问题,合并重复但同时构建找到的域列表(集)主机列表中的其他位置。
【问题讨论】:
-
唯一键到底是什么?
subnet_address或subnet_mask。你必须决定一个。 -
我更新了问题,以便
subnet_address是“主键”,尽管我很想知道subnet_address和subnet_mask是否可以一起用作主键..I假设可以使用“192.168.1.0/23”格式将它们连接在一起
标签: python list dictionary merge duplicates