列表字典到字典

mch*_*gun 6 python dictionary cartesian-product

我有一个列表字典:

In [72]: params
Out[72]: {'a': [1, 2, 3], 'b': [5, 6, 7, 8]}
Run Code Online (Sandbox Code Playgroud)

我可能有两个以上的键/值对.我想创建一个字典列表,它给出了对应于a和的列表的所有可能组合b:

例如

[{'a':1, 'b'=5}, 
{'a':1, 'b'=6},
{'a':1, 'b'=7},
 ...
{'a':3, 'b'=8},]
Run Code Online (Sandbox Code Playgroud)

我可以通过硬编码键来做到这一点:

for a,b in itertools.product(*p.itervalues()):
    print {'a':a, 'b':b}
Run Code Online (Sandbox Code Playgroud)

但我不想硬编码

  1. 我不知道有多少键/值对
  2. 我不一定知道先进的名字

Jay*_*hik 12

你很亲密:

from itertools import product, izip

for i in product(*p.itervalues()):
    print dict(izip(p, i))

{'a': 1, 'b': 5}
{'a': 1, 'b': 6}
...
{'a': 3, 'b': 8}
Run Code Online (Sandbox Code Playgroud)