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'])]
它给了我一个组合,不完全是你例子的形式,但以防万一有人需要不同的组合。
假设我有一个形式为
的 Ordered Dictd = 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'])]
它给了我一个组合,不完全是你例子的形式,但以防万一有人需要不同的组合。