<p>您可以将<code>sth</code>中的每个条目转换为键值元组列表。然后可以使用<a href="https://docs.python.org/3/library/itertools.html#itertools.product" rel="nofollow noreferrer">itertools.product</a>获取所有列表的笛卡尔乘积,并使用该乘积创建参数字典:</p>
<pre><code>import itertools as it
sth = {
"param1": ["p1v1", "p1v2"],
"param2": ["p2v1", "p2v2", "p2v3"],
"param3": ["p3v1", "p3v2"]
}
param_tuples = (
[(param, val) for val in values] for param, values in sth.items()
)
result = [
dict(param_combination) for param_combination in it.product(*param_tuples)
]
</code></pre>
<p>结果:</p>
<pre><code>[{'param1': 'p1v1', 'param2': 'p2v1', 'param3': 'p3v1'},
{'param1': 'p1v1', 'param2': 'p2v1', 'param3': 'p3v2'},
{'param1': 'p1v1', 'param2': 'p2v2', 'param3': 'p3v1'},
{'param1': 'p1v1', 'param2': 'p2v2', 'param3': 'p3v2'},
{'param1': 'p1v1', 'param2': 'p2v3', 'param3': 'p3v1'},
{'param1': 'p1v1', 'param2': 'p2v3', 'param3': 'p3v2'},
{'param1': 'p1v2', 'param2': 'p2v1', 'param3': 'p3v1'},
{'param1': 'p1v2', 'param2': 'p2v1', 'param3': 'p3v2'},
{'param1': 'p1v2', 'param2': 'p2v2', 'param3': 'p3v1'},
{'param1': 'p1v2', 'param2': 'p2v2', 'param3': 'p3v2'},
{'param1': 'p1v2', 'param2': 'p2v3', 'param3': 'p3v1'},
{'param1': 'p1v2', 'param2': 'p2v3', 'param3': 'p3v2'}]
</code></pre>