python中dict中元素的组合

时间:2015-03-07 05:04:40

标签: 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')]

P.S。这里我只显示两个变量的结果,但我正在寻找更通用的代码。也可以随意使用尽可能多的工具......

2 个答案:

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

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