擅长:python、mysql、java
<p>这里不需要嵌套的<code>for</code>循环:</p>
<pre><code>from itertools import product
[dict(zip(d.keys(), combo)) for combo in product(*d.values())]
</code></pre>
<p><code>product(*d.values())</code>生成所需的值组合,<code>dict(zip(d.keys(), combo))</code>再次将每个组合与键重新组合。你知道吗</p>
<p>演示:</p>
<pre><code>>>> from itertools import product
>>> d = {'a':[1,2], 'b':[3,4,5]}
>>> list(product(*d.values()))
[(1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5)]
>>> [dict(zip(d.keys(), combo)) for combo in product(*d.values())]
[{'a': 1, 'b': 3}, {'a': 1, 'b': 4}, {'a': 1, 'b': 5}, {'a': 2, 'b': 3}, {'a': 2, 'b': 4}, {'a': 2, 'b': 5}]
>>> from pprint import pprint
>>> pprint(_)
[{'a': 1, 'b': 3},
{'a': 1, 'b': 4},
{'a': 1, 'b': 5},
{'a': 2, 'b': 3},
{'a': 2, 'b': 4},
{'a': 2, 'b': 5}]
</code></pre>