<p>使用<a href="https://docs.python.org/3/library/itertools.html#itertools.product" rel="nofollow noreferrer">itertools.product</a>的组合获取所有可能值的组合,使用<a href="https://docs.python.org/3/library/functions.html#zip" rel="nofollow noreferrer">zip()</a>将键重新应用于元组:</p>
<pre><code>from itertools import product
sth = {
"param1": ["p1v1", "p1v2"],
"param2": ["p2v1", "p2v2", "p2v3"],
"param3": ["p3v1", "p3v2"]
}
prod = product(*(sth[k] for k in sth))
a = [dict(zip(sth.keys(), p)) for p in prod]
print(a)
</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>