itertools 组合和产品
itertools combinations and products
我正在尝试了解 itertools 库,我的数据如下所示。
devices = ['devicea', 'deviceb', 'devicec']
data = {'devicea': [{'ip': '192.168.1.1', 'vrf': 'aaa'}, {'ip': '192.168.1.2', 'vrf': 'aaa'}],
'deviceb': [{'ip': '10.1.1.1', 'vrf': 'bbb'}, {'ip': '10.1.1.2', 'vrf': 'bbb'}],
'devicec': [{'ip': '20.1.1.1', 'vrf': 'ccc'}, {'ip': '20.1.1.2', 'vrf': 'ccc'}]}
我想获取设备组合的ip的产品,例如结果应该是这样的。
[(192.168.1.1, 10.1.1.1), (192.168.1.1, 10.1.1.2), (192.168.1.1, 20.1.1.1), 192.168.1.1, 20.1.1.2), (192.168.1.2, 10.1.1.1), (192.168.1.2, 10.1.1.2), (192.168.1.2, 20.1.1.1), (192.168.1.2, 20.1.1.2), (10.1.1.1, 20.1.1.1), (10.1.1.1, 20.1.1.2), (10.1.1.2, 20.1.1.1), (10.1.1.2, 20.1.1.2)]
使用itertools.combinations我可以获得一对可能的设备组合。
device_combination = itertools.combinations(devices, 2)
如何使用 itertools.products 查找 ip 地址的产品?
使用itertools.combinations()
获取所有的设备对。然后对于每一对,使用 itertools.product()
获得 IP 的叉积,并将这些添加到结果中。
result = []
for d1, d2 in itertools.combinations(data.values(), 2):
result.extend(itertools.product([i['ip'] for i in d1], [i['ip'] for i in d2])
我正在尝试了解 itertools 库,我的数据如下所示。
devices = ['devicea', 'deviceb', 'devicec']
data = {'devicea': [{'ip': '192.168.1.1', 'vrf': 'aaa'}, {'ip': '192.168.1.2', 'vrf': 'aaa'}],
'deviceb': [{'ip': '10.1.1.1', 'vrf': 'bbb'}, {'ip': '10.1.1.2', 'vrf': 'bbb'}],
'devicec': [{'ip': '20.1.1.1', 'vrf': 'ccc'}, {'ip': '20.1.1.2', 'vrf': 'ccc'}]}
我想获取设备组合的ip的产品,例如结果应该是这样的。
[(192.168.1.1, 10.1.1.1), (192.168.1.1, 10.1.1.2), (192.168.1.1, 20.1.1.1), 192.168.1.1, 20.1.1.2), (192.168.1.2, 10.1.1.1), (192.168.1.2, 10.1.1.2), (192.168.1.2, 20.1.1.1), (192.168.1.2, 20.1.1.2), (10.1.1.1, 20.1.1.1), (10.1.1.1, 20.1.1.2), (10.1.1.2, 20.1.1.1), (10.1.1.2, 20.1.1.2)]
使用itertools.combinations我可以获得一对可能的设备组合。
device_combination = itertools.combinations(devices, 2)
如何使用 itertools.products 查找 ip 地址的产品?
使用itertools.combinations()
获取所有的设备对。然后对于每一对,使用 itertools.product()
获得 IP 的叉积,并将这些添加到结果中。
result = []
for d1, d2 in itertools.combinations(data.values(), 2):
result.extend(itertools.product([i['ip'] for i in d1], [i['ip'] for i in d2])