python 中字典中元素的组合

Combinations of elements in a dict in python

假设我有一个形式为

的 Ordered Dict
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。这里我只显示两个变量的结果,但我正在寻找更通用的代码。也可以随意使用尽可能多的工具...

看起来你想要这样的东西

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

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