假设我有一个表格的有序词典
d = OrderedDict([('x1', ['x1_0', 'x1_1']), ('x2', ['x2_0', 'x2_1','x2_2'])])
如何获得表格
的组合[('x1_0', 'x2_0'),('x1_0', 'x2_1'),('x1_0', 'x2_2'),('x1_1', 'x2_0'),('x1_1', 'x2_1'),('x1_1', 'x2_2')]
P.S。这里我只显示两个变量的结果,但我正在寻找更通用的代码。也可以随意使用尽可能多的工具......
答案 0 :(得分:3)
看起来你想要像
这样的东西import itertools
x = list(itertools.product(*d.values()))
这会遗漏你想要的任何东西......?
答案 1 :(得分:1)
我尝试了以下内容:
import collections
from itertools import product
d = collections.OrderedDict([('x1', ['x1_0', 'x1_1']), ('x2', ['x2_0', 'x2_1','x2_2'])])
poss = [(k,v) if v else (k,) for k,v in d.items()]
list(product(*poss))
输出:
[('x1', 'x2'),
('x1', ['x2_0', 'x2_1', 'x2_2']),
(['x1_0', 'x1_1'], 'x2'),
(['x1_0', 'x1_1'], ['x2_0', 'x2_1', 'x2_2'])]
它给了我一个组合,不完全以你的例子的形式,但万一有人需要一个不同的组合。