- 此问题在此处已有答案**:
(17个答案)
四年前关闭了。
我有任意数量的变量,每个变量可以取任意数量的有效值。例如,a-(a1,a2,a3),b-(b1,b2),c-(c1,c2,c3,c4,c5)。现在,我需要一个字典列表,如下所示
[
{a:a1,b:b1,c:c1},
{a:a1,b:b1,c:c2},
{a:a1,b:b1,c:c3},
.
.
.
{a:a3,b:b2,c:c3}
]
上面的场景总共会有3 * 2 * 5 = 30个组合。如何在python中创建它们。
对于每个变量,我可以有三个for
循环,如下所示
result_list = list()
for a_val in [a1,a2,a3]:
for b_val in [b1,b2]:
for c_val in [c1,c2,c3,c4,c5]:
result_list.append({a:a_val,b:b_val,c:c_val})
但是变量的数量也会有所不同。我想应用5个变量(a,b,c,d,e),而不是3个变量。如何在python中使用通用代码来实现这一点
1条答案
按热度按时间ilmyapht1#
最简单的方法是
itertools.product()
,它允许你在一个简单的一行程序中创建你想要的东西:注意,生成的
combinations
变量本身是list
(可以转换为set
),不同的元素是tuples
,而不是dicts
。目前我看不出为什么必须以类似于dict的方式命名元素的确切原因,只要您知道元素存储在那里的顺序(这在
itertools.product
中是可以预测的)。