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}