【发布时间】:2022-01-24 21:26:58
【问题描述】:
我有这本词典:
d = {
'hosts': [{'hostname': 'ijk,uvw,xyz', 'ip': '127.0.0.3,127.0.0.4,127.0.0.5', 'extra': 'check-me,check-this,check-it'},{'hostname': 'abc,def', 'ip': '127.0.0.1,127.0.0.2, 'extra': 'check-for,check-this}]}
我想要一个字典,其中包含键值对的笛卡尔积。
我需要从中创建以下字典:
d = {
'hosts': [
{'hostname': 'ijk', 'ip': '127.0.0.3', 'extra': 'check-me'},
{'hostname': 'uvw', 'ip': '127.0.0.4', 'extra': 'check-me'},
{'hostname': 'xyz', 'ip': '127.0.0.5', 'extra': 'check-me'},
{'hostname': 'ijk', 'ip': '127.0.0.3', 'extra': 'check-it'},
{'hostname': 'uvw', 'ip': '127.0.0.4', 'extra': 'check-it'},
{'hostname': 'xyz', 'ip': '127.0.0.5', 'extra': 'check-it'},
{'hostname': 'ijk', 'ip': '127.0.0.3', 'extra': 'check-this'},
{'hostname': 'uvw', 'ip': '127.0.0.4', 'extra': 'check-this'},
{'hostname': 'xyz', 'ip': '127.0.0.5', 'extra': 'check-this'},
{'hostname': 'abc', 'ip': '127.0.0.1', 'extra': 'check-for'},
{'hostname': 'abc', 'ip': '127.0.0.1', 'extra': 'check-this'}
{'hostname': 'def', 'ip': '127.0.0.2', 'extra': 'check-for'},
{'hostname': 'def', 'ip': '127.0.0.2', 'extra': 'check-this'}
]
}
【问题讨论】:
-
您的示例不包含三个字段之间的所有可能组合,因为每个主机名都对应一个 IP。所以它实际上不是笛卡尔积。
-
我的要求是只有每个主机名应该有后续的IP,但“额外”应该在所有三个主机名和IP中都有
标签: python python-3.x data-structures cartesian-product