python中dict中的元素组合

python中dict中的元素组合,python,dictionary,itertools,Python,Dictionary,Itertools,假设我有一个有序的表格 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')] 如何获得表单的组合 d = OrderedDict([('x1', ['x1_0', 'x1_1']), ('

假设我有一个有序的表格

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')]
如何获得表单的组合

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')]

这里我只展示了两个变量的结果,但我在寻找一个更通用的代码。您也可以随意使用尽可能多的工具……

看起来您需要这样的工具

import itertools
x = list(itertools.product(*d.values()))

这是否遗漏了您想要的东西…?

看起来您想要的是

import itertools
x = list(itertools.product(*d.values()))

这是否遗漏了您想要的任何东西…?

我尝试了以下方法:

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'])]

它给了我一个组合,与您的示例不完全相同,但以防有人需要不同的组合。

我尝试了以下方法:

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'])]

它给了我一个组合,不完全是以你的例子的形式,但以防有人需要不同的组合。

@PalashAhuja,总是乐于助人——记住在足够的时间允许你时接受a!)@PalashAhuja,总是乐于助人——记得在足够的时间过去时接受A