列表字典中的所有组合

问题定义:

  • 我有一个字典,其中N > 0参数列表作为值,参数名称作为键。

  • 每个列表的长度可能不同(例如,k > 0, l > 0, m > 0...)。

  • 我的目标是生成一个统一的元组列表[(a11, a21, a31, ...), (a12, a22, a32, ...), ..., (a1k, a2l, a3m, ...)],其中每个元组都是一组长度N,并包含相应的参数值。

例子:

给定以下参数字典:

const_params_dict= dict(a=[-1, 1], b=[-5, -4, -3, -2, -1, 1, 2, 3, 4, 5], th=[0.5])

所需的输出将是:

Out: [(-1, -5, 0.5), (-1, -4, 0.5), (-1, -3, 0.5), (-1, -2, 0.5), ..., (-1, 5, 0.5), 
      (1, -5, 0.5),  (1, -4, 0.5),  (1, -3, 0.5),  (1, -3, 0.5) , ..., (1, 5, 0.5)]

列表已知值的解决方案(即 known N):

对于已知的 值,我可以想出一种方法来解决这个问题N,如下所示Code 1

代码 1:

[(a, b, th) for a in const_params_dict['a'] for b in const_params_dict['b'] for th in const_params_dict['th']]

结果是:

[(-1, -5, 0.5),

 (-1, -4, 0.5),

 (-1, -3, 0.5),

 (-1, -2, 0.5),

 (-1, -1, 0.5),

 (-1, 1, 0.5),

 (-1, 2, 0.5),

 (-1, 3, 0.5),

 (-1, 4, 0.5),

 (-1, 5, 0.5),

 (1, -5, 0.5),

 (1, -4, 0.5),

 (1, -3, 0.5),

 (1, -2, 0.5),

 (1, -1, 0.5),

 (1, 1, 0.5),

 (1, 2, 0.5),

 (1, 3, 0.5),

 (1, 4, 0.5),

 (1, 5, 0.5)]

我的问题:


N我怎样才能以最优雅和最有效的方式将此解决方案概括为任意值?


翻翻过去那场雪
浏览 86回答 1
1回答

慕莱坞森

同样使用productitertools 的功能:from itertools import product list(product(*const_params_dict.values()))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python