Python 从列表到字典的字典
我有一本清单字典:Python 从列表到字典的字典,python,dictionary,cartesian-product,Python,Dictionary,Cartesian Product,我有一本清单字典: In [72]: params Out[72]: {'a': [1, 2, 3], 'b': [5, 6, 7, 8]} 我可能有两个以上的键/值对。我想创建一个字典列表,它提供了和a和b对应的所有可能的列表组合: e、 g 我可以通过硬编码键来实现这一点: for a,b in itertools.product(*p.itervalues()): print {'a':a, 'b':b} 但我不想硬编码为 我不知道有多少个键/值对和 我不一定知道高级英语的名字
In [72]: params
Out[72]: {'a': [1, 2, 3], 'b': [5, 6, 7, 8]}
我可能有两个以上的键/值对。我想创建一个字典列表,它提供了和a
和b
对应的所有可能的列表组合:
e、 g
我可以通过硬编码键来实现这一点:
for a,b in itertools.product(*p.itervalues()):
print {'a':a, 'b':b}
但我不想硬编码为
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}
你能给我举一个字典里有三个键的例子吗?实际上我对此有点怀疑。
p.values
和p.keys
的“顺序”是否相同?我本来打算用这个解决方案回答我自己的问题,但我不确定p.keys的顺序。我总觉得它不可靠!在ParameterGrid中签出\uuuu iter\uuuuu()
。正是我想要的。你可以直接用I
压缩p
,节省重复创建密钥列表的时间。该死,Python太强大了。由于缺乏对itertools的实践,我花了半个小时来制定一个递归解决方案。
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}